|
使用stm32l431使用串口115200波特率。使能dma发送。主循环不停发送数据。代码如下:0 [. x8 q6 @* A2 s3 i' o if((send_count != count) && (flag_1 == 0) && (send_count % 10 == 0))5 Y9 c# i' l" ]% t9 y$ k2 z { flag_1 = 1; HAL_UART_Transmit_DMA(&huart1, (uint8_t *)buf, 22);' y1 n; w- Y4 L4 m / m1 D+ _9 u. A: L; a count = send_count;! J, G% z$ l# i% H! T- I } @! ]" q) I8 q & H% N! `' P) q0 m flag_1在dma中断清除。代码如下:0 J- p. U+ c4 v! T void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {2 ?$ K1 \; h' G. I K . N# p% g. K3 X$ Q7 x) Q 4 g% j9 R/ x. f( d' F% d& E huart->gState = HAL_UART_STATE_READY; Y0 s( J' e, m7 @ flag_1 = 0;! I) j9 E) T" ]) t7 v; z" E }/ t. R0 v7 }' c0 ^ 使能dma接收。! i5 N1 t4 Q6 B" P$ [, I 0 Z. ^. G8 z) Y$ c' u& }' ~8 {0 j dma中断中再启动一个新的接收dma。 使用串口调试助手不停发送数据。运行一段时间后串口接收会溢出。 ! Q8 r9 v6 R0 `- J 串口接收发送 会触发dma中断。想问一下 是否是由于中断处理不过来 导致 接收中断还没有启动一个新的dma时。串口就有数据导致的。* N* \& f5 V. m" D1 D2 H+ b 芯片的同时收发的极限速率输多少?% d8 }5 f' m" l0 V- P |
微信公众号
手机版