STM32F051 FLASH_ErasePage problem.

nesvacil@posys.cz nesvacil na posys.eu
Pátek Říjen 4 19:07:04 CEST 2013


Kde mate v preruseni nastaveni toho gblUsart.flag ? Dle toho popisu soudim, ze to cpu jen uspite neustale dokola.

...
  while (1) {
__WFI();
if (!gblUsart.flag) continue;
...



Jirka
  Dne 4. 10. 2013 16:30, Miroslav Mraz napsal(a):
> 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
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list