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