STM32F051 FLASH_ErasePage problem.

Miroslav Mraz mraz na seznam.cz
Pátek Říjen 4 19:43:32 CEST 2013


Vidím, že se nad tím dokonce někdo i zamyslel (a našel si tu druhou část
kódu). Děkuji a chválím.
Nicméně i zde problém není, ta proměnná gblUsart.flag se nastavuje v
rutině usartRxProcess(znak), pokud znak je ten správný. Ono je to
vysekané z projektu, který se už trochu rozrostl, takže je poměrně
nepřehledný. Jestli se v tom chce někdo hlouběji vrtat, můžu vystavit
někde celé.

Mrazík

nesvacil na posys.cz píše v Pá 04. 10. 2013 v 19:07 +0200:
> 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
> 
> _______________________________________________
> 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