STM32F051 FLASH_ErasePage problem.

Jan Waclawek konfera na efton.sk
Pátek Říjen 4 22:50:52 CEST 2013


>má ty flagy sice blbì napsané, ale hodnotou to odpovídá jen povolení pøijímaèe, vysílaèe a usartu celkovì. Takže
>chyby by pøerušovat nemìly. Možná tedy explicitnì nulovat v pøerušení nìjaký ten flag, který by tam být nemìl.

Ak nie je povolene prerusenie na chybove flagy, tak je jedno, ci su
nastavene, ci nie, a pricina je ina.


>Jediné, co mi teï 
>napadá je, že pøi vysílání usartu se používá v main() USART1->CR1 |=  
>USART_FLAG_TXE;
>což není atomické, takže se mùže zapsat do toho CR1 nesmysl a pak to 
>mùže takhle divnì pøerušovat.

Ale no. Ved to je stale deterministicky stroj, takze do CR1 by sa nemal
zapisat ziadny zahadny nezmysel. Jednoducho sa zaignoruje to, co sa do
neho zapise v preruseni. Lenze v tom preruseni nemenite v CR1 nic ine, len
prave ten TXE interrupt enable bit (mimochodom, preco nepouzivate pre
jednotlive bity v perifernych registroch makra definovane v stm32f0xx.h,
konkretne tu USART_CR1_TXEIE ?), takze aj ked je to blbo napisane, malo by
to byt jedno, ci nie?

Skuste sa este pohrat s tym debuggerom. Na strane PC mate OpenOCD+gdb, ak
tomu dobre rozumiem? Tak to potom mate vsetko, co treba. Bolo by dobre
zistit jednak PC (a k tomu ten mix C+disasm relevantnej casti ISR), druhak
stav registrov USARTu v tom case.

wek




Další informace o konferenci Hw-list