STM32CubeMX—串口空闲中断+DMA接收 1)、串口一配置。 2)、开启中断模式 3)、生成工程代' w% Q! R# T& R8 K
! S+ F k7 {/ }' K. S
& j% {( w @+ N% _% l( {在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)0 l4 L, }+ ]- |) w
- {
; f) U2 Q. l! r5 e) j - /* USER CODE BEGIN USART1_IRQn 0 */
# d" H. i+ e. N - recv_end_flag = 1;
$ q& ~: O$ N& a. j - __HAL_UART_CLEAR_IDLEFLAG(&huart1);
+ c# b* g8 B4 o8 @ - /* USER CODE END USART1_IRQn 0 */0 Q0 `8 R* ^' X1 s: F- @
- HAL_UART_IRQHandler(&huart1);
! P: j' Q4 X" b9 V# I, |; q+ g - /* 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>
复制代码 2 U7 b. b! E9 J# t+ D7 P7 `- w
在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>
4 b9 M0 S; S4 _/ Y - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">MX_GPIO_Init();5 E" q6 W1 X2 a
- MX_DMA_Init();
5 K4 H( Q! d/ A7 K: ?/ d0 x - MX_ADC1_Init();$ x3 _' l' L, F! X' b5 f
- MX_USART1_UART_Init();
. c* B' e4 G; J. j - /* USER CODE BEGIN 2 */
! G: ^9 S9 {9 T. `! ~9 z - __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
* H9 \8 [; L/ Z0 \1 t- ], U - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));
8 `2 S$ M x( i- T) \+ m9 @ - /* 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 */* z$ M0 ^# t/ f, U+ U
- /* USER CODE BEGIN WHILE */: [4 [; w: u2 E5 r7 _, T: H
- while (1)1 [0 E/ y' [- I$ ^$ e
- {</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);
0 A" ^7 Q( h3 [. l" E( @2 a, _8 I - HAL_Delay(200);
: r( x% t0 q2 d - 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);
* G* w9 @' q- A9 j% u$ K* e+ V6 q0 O4 G - if(recv_end_flag ==1){. P7 M4 ]* l6 p3 a6 R4 o
4 B% n1 Q- o5 n: R- }# J2 C- `& P% S6 `0 d- K. S
- /* 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 u" U8 @* V( g
- }
" g1 I2 b6 K4 H- ? a+ ~ - /* USER CODE END 3 */- z7 u* W! v v7 x2 V
- }</font></font></font></p>
复制代码 ' V9 ?/ m% m7 H: R5 }1 y0 D# M0 s
: N6 G3 G3 _0 H" x2 B6 v/ V! `* U
|