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

2)、开启中断模式 
3)、生成工程代6 ~; W4 X0 p1 @4 } C
7 Z0 b6 q: g: m% j& s. f. T6 N6 s8 E$ t5 I+ @5 n9 A: p
在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)& _+ \- P6 f* ]5 j0 j1 V6 p9 x
- {8 J; H0 E; p! u6 j! Q
- /* USER CODE BEGIN USART1_IRQn 0 */+ K# P! L+ K2 B! f, V: }
- recv_end_flag = 1;6 s1 S, ^2 b! u: k( [7 v
- __HAL_UART_CLEAR_IDLEFLAG(&huart1); k3 U _) T9 [9 P: n
- /* USER CODE END USART1_IRQn 0 */
/ l9 q: G- a3 I7 b+ U - HAL_UART_IRQHandler(&huart1);
, p( Q0 Z/ A1 D - /* 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>
复制代码
' S# @- V4 N0 Y# h! R在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>1 e) c% @/ D$ @" Y) U$ o4 }* K8 H
- <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">MX_GPIO_Init();7 p+ T( J5 ?4 C2 I9 f
- MX_DMA_Init();
' C$ t/ O+ Y0 D+ t( r' @ - MX_ADC1_Init();& B$ g0 ?" v' ?& A" ^; t' F! C) c0 X+ s
- MX_USART1_UART_Init();+ f) W7 i1 b9 f" v* R
- /* USER CODE BEGIN 2 */1 [4 q+ V0 Z) s2 ?+ [8 L
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
6 n3 H" A5 `: k* Q - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));; i# y6 |" e" ]0 R
- /* 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 */! }) V! b1 k. H: B
- /* USER CODE BEGIN WHILE */
2 S8 [+ f2 d4 w, v* y - while (1)
' n; w) D: p1 s3 Y$ f0 \' r2 w4 r: K - {</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);
) L0 ~- r a: Q# y( ~ - HAL_Delay(200);
w. v+ D {* Q5 H% Y& 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="-apple-system, " "=""><font style="font-size: 16px"> HAL_Delay(200);
- Q: j/ M9 |1 {& B: Q8 z" E - if(recv_end_flag ==1){
! T+ F% _+ |" Y; w
( |0 A& F* A' ~* n& |- }5 a; z" o- ]& ]% C( ]3 C/ }$ K
- /* 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 */0 J. m. d2 K" m+ S! O
- }
- }. E; f8 A# G0 ~# X - /* USER CODE END 3 */2 a, r' e( C3 j% c1 g" \
- }</font></font></font></p>
复制代码
) `0 ^8 s; g' e8 `6 g, `3 q4 G- D- J1 u8 j
|