STM32F051 FLASH_ErasePage problem.
Miroslav Mraz
mraz na seznam.cz
Pátek Říjen 4 16:30:03 CEST 2013
Ku podivu to nekončí hwfault. Končí to v přerušení od usartu - jakoby se
nesmazal nějaký flag. Ale je mi divné, že samostatně ten usart chodí v
pohodě, stejně tak i to mazání stránky. Jen když se to potká obojí
najednou. Spíš je nějak blbě ta obsluha přerušení usartu. Možná jsem si
to moc zjednodušil.
void USART1_IRQHandler (void) {
register uint32_t status;
uint8_t rdata, tdata;
status = USART1->ISR;
if (status & USART_FLAG_TXE) {
if (usartReadBuf (&gblUsart.tx, &tdata)) {
USART1->TDR = (uint32_t) tdata & 0xFF;
}
else {
USART1->CR1 &= ~USART_FLAG_TXE;
}
}
if (status & USART_FLAG_RXNE) {
rdata = (USART1->RDR) & 0xFF;
usartRxProcess (rdata);
}
}
FLASH_Status FLASH_WaitForLastOperation() je voláno uvnitř toho
ErasePage(), hned na začátku. Tam bych problém neviděl, jak jsem psal,
samostatně to proběhne korektně. Ono to korektně proběhne i když je
ErasePage() voláno uvnitř přerušení od přijímače usartu.
Mrazík
On 10/04/2013 03:59 PM, nesvacil na posys.cz wrote:
> Zkusil jste zachytit hwfault ?
> Dival jste se na FLASH_Status FLASH_WaitForLastOperation(uint32_t
> Timeout) tj. treba pockat nez je FLASH pripravena ?
> Jirka
>
Další informace o konferenci Hw-list