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

2)、开启中断模式 
3)、生成工程代
* U, @* p. v# |1 t* L: z% H 4 U; l" u. K/ j1 V9 g* T
" M2 K; _! `/ w6 l4 Y在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)# g! W. R" z3 O# r) j# E/ O
- {7 W; s& M1 T$ z! x" c
- /* USER CODE BEGIN USART1_IRQn 0 */
7 v L) q, i3 C; ^ - recv_end_flag = 1;
6 v, \. s+ U0 B' [ - __HAL_UART_CLEAR_IDLEFLAG(&huart1);6 h7 @; t, |" b2 F% k" l& E2 N
- /* USER CODE END USART1_IRQn 0 */4 K9 a$ ^( ~# m& }1 @
- HAL_UART_IRQHandler(&huart1); a9 K/ X( S- \. u2 h7 ^$ [, d: N9 z
- /* 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>
复制代码
2 P0 I7 X2 A/ m# q! ~在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(); Z4 g& M2 {1 v$ J+ E# a
- MX_DMA_Init();2 S1 H1 o& f* Y3 K
- MX_ADC1_Init();
# x( X) }* S' a' d - MX_USART1_UART_Init();( \9 }$ K' Q5 Q3 d+ o+ F2 [% W) ^
- /* USER CODE BEGIN 2 */
$ `0 `" Z0 m; X6 X4 [ - __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
+ d( j* }6 m d9 _/ R - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));
0 u% U6 W$ V" w9 x0 g3 b& O# e - /* 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 */
3 e& w3 e5 L- c7 n/ j' l- G: J - /* USER CODE BEGIN WHILE */1 i: S. f8 ~9 J7 Q1 m& L& I
- while (1)
9 J$ q, E, d( t2 Y; Q$ U C& b6 r - {</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);
) @& ^$ @# f- m1 I7 k - HAL_Delay(200);6 j3 \% j; {3 h
- 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);' r8 i* {& @7 s- W2 l* U1 c0 p
- if(recv_end_flag ==1){
9 H/ J1 h, y- q. p$ w+ r9 b - # s8 O" \# p3 W- u% O) Z
- }
$ l0 _/ y, }% i" }/ S' H5 _* ^4 e - /* 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 */
( J7 L0 T2 b4 k( O2 F - }
W) H S9 C" j# F0 W: g* Z - /* USER CODE END 3 */
( s8 D8 X6 h& ~. }( K - }</font></font></font></p>
复制代码
; L2 W5 e, D5 N W2 o |