STM32F103 UART DMA

Petr Labaj labaj na volny.cz
Úterý Prosinec 26 17:14:44 CET 2023


Můžu drobnou poznámku, která je ale obecnější a s daným problémem nesouvisí?

Vy všude používáte "orování" parametrů, které zadáváte do řídících registrů.
Např.:
USART2->CR1 |= USART_CR1_TE | USART_CR1_RE;
nebo
DMA1_Channel6->CCR |= DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_TCIE;

Ale používáte to i při prvním zápisu do daného registru.
Tedy jinými slovy spoléháte na to, že předtím tam byly samé nuly.
Což může být velice zrádné, když tu konstrukci použijete třeba i někdy 
později, kdy už v těch registrech něco je.

Takže by podle mě měl první zápis vypadat takhle:
USART2->CR1 = USART_CR1_TE | USART_CR1_RE;
nebo
DMA1_Channel6->CCR = DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_TCIE;

A orování použít až když tam už dodatečně něco přidáváte.

PL


Další informace o konferenci Hw-list