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

2)、开启中断模式 
3)、生成工程代
/ m6 x+ v( J8 m$ w
; I6 y) H3 Y' B+ M6 R! _) c* w- c( q' z( e2 H
在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)
& y- S/ k. m; k W$ f3 Z* x$ z - {. d3 l5 U; F1 i% W- j8 s
- /* USER CODE BEGIN USART1_IRQn 0 */) T$ d* Q' p! F% q. S5 z. Z
- recv_end_flag = 1;
; W- \- d x2 x - __HAL_UART_CLEAR_IDLEFLAG(&huart1);
$ u* A" R# a4 D+ l3 {$ L - /* USER CODE END USART1_IRQn 0 */
* a6 {' z1 C! E7 z, T* g - HAL_UART_IRQHandler(&huart1);% L) V0 e% s' \
- /* 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>
复制代码 & y) K4 j+ l' K) y
在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();' ^! R8 W8 g2 H3 [$ W
- MX_DMA_Init();
$ V9 X' ]1 s, J0 D - MX_ADC1_Init();0 s0 N+ p4 D% b$ Y
- MX_USART1_UART_Init();
/ v& x2 l& ^. k" i - /* USER CODE BEGIN 2 */; X' b) X2 {4 p, R3 w+ {
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
2 m- V; m( C" `+ k% d0 [ - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer)); L2 i# d6 [& Q' F* I1 \& k p" x
- /* 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 */+ A U, z/ t! M
- /* USER CODE BEGIN WHILE *// Z# j/ f- P0 z4 H7 ~0 M3 X/ n
- while (1)- }& K& e' H& |0 H, I
- {</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);
" L' X) ]9 a+ |# [ - HAL_Delay(200);4 Q# y7 Q" y* l$ B% F' y0 u' i2 z
- 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);, s0 p: s/ f2 f1 q
- if(recv_end_flag ==1){, |- M' w3 |4 Y6 H; p, e
: y( \$ f. M& H* ], H- }
$ U0 j7 R# h) X }# h - /* 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 */4 f+ R! r. L8 I) ~
- }$ ]" I, x" _8 ]+ G$ J
- /* USER CODE END 3 */
3 y1 A9 R1 E' c - }</font></font></font></p>
复制代码 " L" c, ]" O: ]" P3 o8 P9 {" z
|