STM32CubeMX—串口空闲中断+DMA接收 1)、串口一配置。 2)、开启中断模式 3)、生成工程代) j$ m$ ]- b: d0 f5 ^( ?1 J- x
6 @, D1 A* g7 @
( s4 M J9 g9 a
在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)' w3 q0 P6 E) j8 y4 }- J1 a
- {5 y g# Z) D3 `1 m9 P, A) t
- /* USER CODE BEGIN USART1_IRQn 0 */. K* v. e' I, K$ Y! e
- recv_end_flag = 1;# R$ B6 e, H6 O1 F' O: F3 }
- __HAL_UART_CLEAR_IDLEFLAG(&huart1);8 \5 B7 X+ W! q0 x
- /* USER CODE END USART1_IRQn 0 */1 F4 @4 p# S7 {- Q; h) p9 C; H
- HAL_UART_IRQHandler(&huart1);8 P! e" O1 N! L. j4 D$ p2 Q! x
- /* 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>
复制代码
& z( \& s" s! I' V! W0 i. r在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 i5 `3 X5 P l1 y+ l% b9 X - MX_DMA_Init();$ n) N/ I9 }: {: L9 u9 G# k
- MX_ADC1_Init();
# m# j8 ^/ O( p2 F! P' j - MX_USART1_UART_Init();; W% N# v, H- M- J- ^+ X* N9 r6 i Y
- /* USER CODE BEGIN 2 */
6 u- {+ O& k0 H5 Q8 S1 { - __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
Z8 D: |. P9 @ - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));# i7 S+ b0 o/ ^/ M" o
- /* 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 */
4 C- A6 B v0 [8 U7 v - /* USER CODE BEGIN WHILE */5 [6 T- f. @* l* u; G9 K% u
- while (1)
# d, Q) v- R: i& a+ t( \ - {</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);
" ^& q+ G* r7 K4 h - HAL_Delay(200);; q4 Q7 u& K$ X
- 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);
- }, f; ~ ], w9 V - if(recv_end_flag ==1){+ K( ]' f R3 b U; C# ~
, @8 F/ p3 y. L% x4 l5 c- }$ H2 d. |0 j! h1 `% B
- /* 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 */7 ]+ r% Y% i. x m
- }0 L3 C, _5 {& q3 b4 _0 T; h! M
- /* USER CODE END 3 */& D- X# g- E. M1 S) b
- }</font></font></font></p>
复制代码
6 \. ~; p" a' {0 c7 a/ |: M6 V |