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

2)、开启中断模式 
3)、生成工程代. E# Q9 G% b+ h5 O5 w" G4 K
+ k6 k) _& x- b! v) B. L7 y/ C
在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)! F- i8 Y0 t- }: L
- {
& D+ ? j; c1 d - /* USER CODE BEGIN USART1_IRQn 0 */8 g& u$ F3 `" S( B2 m: w( C
- recv_end_flag = 1;$ N" t) Y v$ O. o8 d% u
- __HAL_UART_CLEAR_IDLEFLAG(&huart1);3 |! R2 b/ X: A
- /* USER CODE END USART1_IRQn 0 */& Q6 _ K8 ^/ M7 o' m5 P- s8 S4 Z7 A
- HAL_UART_IRQHandler(&huart1);5 B2 R' ~+ w7 ~" S1 A3 o
- /* 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>
复制代码
0 H* E- j A8 o" A2 @# Q" L在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();4 [0 x0 e( c! Y8 _: J" [1 Y4 Q
- MX_DMA_Init();
7 Q; Q/ v {4 M/ m- \ - MX_ADC1_Init();
7 V' N, Z' d( J$ b! p2 t$ `% q - MX_USART1_UART_Init(); C1 v4 c w* r7 E" V
- /* USER CODE BEGIN 2 */' g1 {) R/ Y5 }- ?( S
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
9 }' c& _* e! {% \ - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));
1 {7 G% h6 o4 D, u+ s% W0 q - /* 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 */
; o# K9 _& w' S& A% i% O5 r' L - /* USER CODE BEGIN WHILE */6 P# R9 ~ ]: Z1 \: W) \
- while (1)
, s) N* T) y$ ^" U( E - {</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);
2 o+ b$ Z3 l% v7 G# h2 _" I - HAL_Delay(200);# C) c: W/ j8 H) B! [) [. k
- 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);2 [8 b4 {7 e' z& O: v+ a0 D
- if(recv_end_flag ==1){4 ?/ R: W! Q s5 L# \% g/ [& E$ _' D
3 b9 w' m7 `* M' ~; `+ {- }0 }7 w, l$ w* C8 V j/ t' I
- /* 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 */0 J: S* V- i7 Z8 E1 ^$ ~# I
- }
x2 W3 X$ `* b9 `* q% K - /* USER CODE END 3 */
+ Y1 ^ m6 Y, Z+ E - }</font></font></font></p>
复制代码 0 |; T5 ]; G0 D
|