Ja sam par puta naleteo na neke koske sa tim HAL bibliotekama, posle toga sam digo ruke od HAL-a i presao sve na low-level, tu bar znam tacno sta se desava i sta sam pisao ...
Da li je code "portabilan", to ne brinem mnogo, to prepakovati za neki drugi MCU je 5 minuta posla samo brojeve pinova da izmenim ...
HAL i CubeMX su zgodni bar meni "informativno", tj ako negde zaglavim sa nekom konfiguracijom na low-level nivou, odradim to isto sa HAL privremeno u nekom test programu i posle u debugeru pogledam tacno kako su postavljeni registri za tu periferiju pa onda to isto uradim rucno
PS: Ovaj code je kompatibilan 100% i za RS-485 ako se koristi MAX13487 koji ima automatsku DE (Driver Enable) kontrolu. Za obicne MAX485 se tu negde stavja TX_ON / TX_OFF za DE pin.
PS2: U mom primeru sam pratio Framing Error i Noise Error, vrlo korisna stvar jer odmah prepoznas da ima nekih gresaka, promasen Baud Rate, start/stop bits ili vec neki problemi na HW nivou.
PS3: Sav Code koji se tice ISR-a i baratanja tim flagovima u sustini mora tako da se pise, tu nista ne pomaze HAL, moras svakako da nadgledas neke low-level registre.
Da li je code "portabilan", to ne brinem mnogo, to prepakovati za neki drugi MCU je 5 minuta posla samo brojeve pinova da izmenim ...
HAL i CubeMX su zgodni bar meni "informativno", tj ako negde zaglavim sa nekom konfiguracijom na low-level nivou, odradim to isto sa HAL privremeno u nekom test programu i posle u debugeru pogledam tacno kako su postavljeni registri za tu periferiju pa onda to isto uradim rucno
PS: Ovaj code je kompatibilan 100% i za RS-485 ako se koristi MAX13487 koji ima automatsku DE (Driver Enable) kontrolu. Za obicne MAX485 se tu negde stavja TX_ON / TX_OFF za DE pin.
PS2: U mom primeru sam pratio Framing Error i Noise Error, vrlo korisna stvar jer odmah prepoznas da ima nekih gresaka, promasen Baud Rate, start/stop bits ili vec neki problemi na HW nivou.
PS3: Sav Code koji se tice ISR-a i baratanja tim flagovima u sustini mora tako da se pise, tu nista ne pomaze HAL, moras svakako da nadgledas neke low-level registre.