Cube, M0, divne chovani

Jan Waclawek konfera na efton.sk
Úterý Listopad 24 21:56:52 CET 2015


A co tak pozriet do registrov GPIO, ci po volani tej funkcie je tam to co
tam ma byt?

A M0 alebo M0+? GPIO je zhodou okolnosti nieco, v com sa dost vyrazne lisia.

Inak klasicky problem - a nielen s GPIO, ale u ostatnych periferii to byva
menej vypukle pretoze su obvykle za pomalsou zbernicou resp.
resynchronizatorom co dostatocne oneskori zapis - je, ze sa nestihnu
zapnut hodiny po zapise do registra RCC a uz nastane zapis do registra
GPIO, ktory je ale (kvoli este nebeziacim hodinam) ignorovany. Riesenim je
precitat dany RCC register po zapise pred zapisom do GPIO; druhym je
zapisovat do registra GPIO v slucke, ktora sa opusti az ked sa precitana
hodnota zhoduje. Ja to vsak robim tak, ze vsetky RCC registre
inicializujem naraz na zaciatku programu, a potom este robim ine veci
ktore s RCC nesuvisia, a az potom zacnem robit vsetko ostatne. O ano, som
staromodny a "kniznicami" pohrdam.

A neodpustim si: ak je to tato pricina, tak to je prave nasledok toho
rozsiahleho nahradzania porozumenia problemu mavanim rukou.

wek



----- Original Message ---------------
>Dnes kolega narazil na zajimavy problem, pri prekladu bez optimalizace 
>fungovalo PWM OK, jakmile se nastavila optimalizace na velikost (Os) tak 
>fungovat prestalo.
>Pokusnou metodou jsem zjistil, ze je problem ve funkci HAL_GPIO_Init, 
>pokud se pro ni vypne optimalizace, funguje, pokud zapne, nefunguje.
>Pritom treba UART, ADC, bezne IO fungujou v obou pripadech.
>
>Budu nad tim zitra badat, mozna je to chyba na nasi strane, ale nesetkal 
>se s tim nekdo? Ponekud mne to znervoznuje.
>____________


Další informace o konferenci Hw-list