|
STM32CubeMX—串口空闲中断+DMA接收 1)、串口一配置。 

2)、开启中断模式 
3)、生成工程代& D# U. J7 h0 n3 R+ f$ a# R
9 `. }: G2 G$ d2 |2 V+ E4 e! P: h
' q$ v, d# ~* g在stm32g0xx_it.c中添 - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">uint8_t recv_end_flag=0;</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">void USART1_IRQHandler(void)
2 f0 |5 g, y/ b* B% T J" P6 q - {
& T% k9 N) G; w0 J: T - /* USER CODE BEGIN USART1_IRQn 0 */$ H) U0 Z/ j- ^6 ?+ I+ ~9 H
- recv_end_flag = 1;- c ]1 ?# h/ E& ]1 }% g# }/ r
- __HAL_UART_CLEAR_IDLEFLAG(&huart1);+ s$ _8 _" U/ F8 L; Q4 j
- /* USER CODE END USART1_IRQn 0 */: k/ B# x. y0 C U
- HAL_UART_IRQHandler(&huart1);
$ M( \; D0 O r. X+ k - /* USER CODE BEGIN USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* USER CODE END USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">}</font></font></font></p>
复制代码
& j, Z- Y* h" H在main.c中加上 - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">#include"stm32g0xx_it.h"</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">extern uint8_t recv_end_flag;</font></font></font></p>" R- b' ?: C( l1 V. j: a1 T( o/ _) h
- <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">MX_GPIO_Init();* X" E& h: l) x
- MX_DMA_Init();) V, f5 v& O# c7 r. j; t ~1 D v
- MX_ADC1_Init();
* Q4 M- B Y# c7 G; p8 N - MX_USART1_UART_Init();% o) I& t6 J' A* l0 F6 J7 D! [
- /* USER CODE BEGIN 2 */
5 d% C; }/ Y0 M$ ]$ w5 X# j, t - __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);4 J7 F' A8 q! m' l$ S
- HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));: b) P. C$ P# f6 c* k
- /* USER CODE END 2 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* Infinite loop */8 V4 Q% C2 R' f, I$ w5 e/ C
- /* USER CODE BEGIN WHILE */. L; u" K( q1 U( ]2 C8 T
- while (1)7 \/ N* @) \/ _ H. j% E. q+ o
- {</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);* \5 e( Q4 Y. ~2 E5 T
- HAL_Delay(200);: Q$ ^' _: a. M: u7 c& C* {
- HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> HAL_Delay(200);
6 l& o# R z' F1 F( n7 J( L, a - if(recv_end_flag ==1){
4 ?! u# p% i) F+ n% J
9 }4 J/ F- V& K/ d* a% U9 R$ e- }1 V& ~* O) l+ [3 H9 P! S
- /* USER CODE END WHILE */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* USER CODE BEGIN 3 */
8 p7 i3 s: m, [ - }! P( j& R* `3 E. e
- /* USER CODE END 3 */$ f9 q9 w% y' Q1 @' C
- }</font></font></font></p>
复制代码
, f9 Q, h$ a4 |
9 @% O$ f ]1 v6 q, R2 ]5 P |