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

2)、开启中断模式 
3)、生成工程代7 V6 \, M0 e Y8 H
2 w& p% L) |, G
# a+ o* i% w: ^: |- |* x6 ]
在stm32g0xx_it.c中添 - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3">uint8_t recv_end_flag=0;</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3">void USART1_IRQHandler(void) w* x4 j, a# v0 |9 U
- {1 O8 Z/ A# ~5 y; x$ U
- /* USER CODE BEGIN USART1_IRQn 0 */$ Q @% l9 ?! B% Q! O, v
- recv_end_flag = 1;4 C r9 g" h# l3 C
- __HAL_UART_CLEAR_IDLEFLAG(&huart1);6 r; \" R- {/ o' I$ M' Q# ^9 w
- /* USER CODE END USART1_IRQn 0 */) ?% S4 Y, m; P: x
- HAL_UART_IRQHandler(&huart1);
( v/ V! H- z% Q6 s0 e" b - /* USER CODE BEGIN USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3"> /* USER CODE END USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3">}</font></font></font></p>
复制代码
* ?6 e- H" L a' [1 S9 f, W; s/ s1 [在main.c中加上 - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3">#include"stm32g0xx_it.h"</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3">extern uint8_t recv_end_flag;</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3"> </font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3">MX_GPIO_Init();3 a, J# \7 X. u V9 j. P
- MX_DMA_Init();. |4 |+ A. h+ Y z5 V7 K5 d; ?* g
- MX_ADC1_Init();1 d2 }/ f; W" ~1 j( x! o' d
- MX_USART1_UART_Init();+ x# }' U) @4 p# P
- /* USER CODE BEGIN 2 */% O* L6 z0 ]7 F8 R
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
; O ?. f0 q) G# X! Q# d - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));7 a+ _: s' a% Q# p1 {( |
- /* USER CODE END 2 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3"> /* Infinite loop */7 \& ?" [/ Y W, j1 \ E8 q
- /* USER CODE BEGIN WHILE */; D/ n. h$ A$ ~: ^
- while (1)
9 x3 _% }# `8 u - {</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3"> HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
}( j u% `" y& P5 D$ X1 [+ H - HAL_Delay(200);5 V8 n' o8 c5 W9 h) W6 Q
- 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="Tahoma"><font size="3"> HAL_Delay(200);0 @% h9 K g) `7 m
- if(recv_end_flag ==1){9 `$ _$ U c' d; |
/ v- z/ c6 z) K9 L+ m- }
& `1 T, E- t/ [ T - /* USER CODE END WHILE */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="Tahoma"><font size="3"> /* USER CODE BEGIN 3 */* ]; E; h! Z1 ~* i
- }
7 y# O% j; m9 x$ @& ], [ - /* USER CODE END 3 */( G. O5 d' r$ {6 L, N& D
- }</font></font></font></p>
复制代码
% l+ p" b6 C5 x( {9 ]. M: Z |