STM32CubeMX—串口空闲中断+DMA接收 1)、串口一配置。 2)、开启中断模式 3)、生成工程代* H; n) J. |& H. e' E
0 B4 r- y2 ? ?- z- L
- E6 G$ q% W% T- L在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)
8 p! ~" N L' J - {
7 z/ [* \3 j: V/ _ R - /* USER CODE BEGIN USART1_IRQn 0 */
# q2 H/ z5 j' H$ d - recv_end_flag = 1;
# w$ P' \, ~/ q; P* o. j3 T - __HAL_UART_CLEAR_IDLEFLAG(&huart1);
6 o4 `' r$ t' y* W7 d* D - /* USER CODE END USART1_IRQn 0 */* \- m$ [& U- M, `# K- d
- HAL_UART_IRQHandler(&huart1);- [- z6 @9 M) B D) E3 u
- /* 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>
复制代码 * t7 P( W! v% t
在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();
5 x5 V3 s+ c6 I' q% Z: R - MX_DMA_Init();& ~9 Q! h0 r, [+ ?9 H/ M3 l. F
- MX_ADC1_Init();
, |8 k% F8 w7 W0 g - MX_USART1_UART_Init();
. N0 k! F/ L* N6 @. v - /* USER CODE BEGIN 2 */# A% f; N) v" M
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);1 S# y; ~) @1 p* U0 [0 I. ?- `
- HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));& O( O p6 g& z
- /* 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 */6 U0 Y( C7 D" w+ W
- /* USER CODE BEGIN WHILE */2 K% p$ y: J, J+ E; l1 L
- while (1)
& ]& A) j) U; }5 o' [ - {</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);
6 ^% }% K: r6 T+ l- N - HAL_Delay(200);
' n6 ]9 C6 Q$ J: S1 w - 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, Q& L8 b" x) h* y
- if(recv_end_flag ==1){
/ w& j1 i- _/ F8 E: `8 d3 @ - / _0 y1 o: f$ ^2 V( O& @$ _
- }
4 S# |* K7 j- Y - /* 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 */9 s0 {" ]2 _2 O
- }% k8 G' K$ e+ z& b; ~ e
- /* USER CODE END 3 */
; ]4 p& T4 M2 \ _. p - }</font></font></font></p>
复制代码 5 v6 G0 ?5 r, r+ Q8 u u9 h+ @
|