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

2)、开启中断模式 
3)、生成工程代
! z0 o2 @6 P' e; g ) \5 o0 q) n/ [6 X/ @& a: E
/ z% e- Q) z4 ^) `4 w$ v: h! n
在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)
" {* [4 e, s0 D, ~; ^% h# N" @ - { |: u* R; ~, _% e' ~/ i
- /* USER CODE BEGIN USART1_IRQn 0 */' C9 P7 \. J/ I- H$ a+ t4 r
- recv_end_flag = 1;) J3 f/ h" L/ z A' C2 l
- __HAL_UART_CLEAR_IDLEFLAG(&huart1);9 r& z4 d/ m% K$ r# x- X$ {& k
- /* USER CODE END USART1_IRQn 0 */$ v& X8 H3 B$ k# P) D o+ N9 Y* w
- HAL_UART_IRQHandler(&huart1);
; [. ]8 O* E, C4 G( C( N - /* 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 ]6 R7 c8 [8 L2 w
在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();; [/ Y: I* q( p) B9 r% T4 V
- MX_DMA_Init();
6 D% u, z: R" B$ W! e7 j X" ` - MX_ADC1_Init();
* T7 @+ K0 X" p! p3 z - MX_USART1_UART_Init();2 q2 B. X1 r5 X
- /* USER CODE BEGIN 2 */& I! X0 o; {* |: K% m# s/ x! X j
- __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
4 m Z$ w/ H: S - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));+ L1 K1 x* `3 G" l* [2 R5 S+ l
- /* 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 */
: w! u& e# F' J% U0 T - /* USER CODE BEGIN WHILE */; ]( I% n; v, [+ X" D5 l
- while (1)
6 u4 L, }( I: {. X - {</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 s9 H$ @* K$ \8 l. }5 s3 R
- HAL_Delay(200);
" F; `4 S7 m" n8 U; i( G% l0 F* H! y6 Q - 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);
/ p" ~8 D" w- S! A: T ~ - if(recv_end_flag ==1){
) q n* W( X( T a - . p7 ]: u. I6 o4 [
- }; X; Q' e# c' @* C
- /* 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 */
: E V$ F/ U6 v5 b: h - }$ `8 t" q. s5 Q# \% }
- /* USER CODE END 3 */
% `% D8 S' N, d) e T( A" ]3 U - }</font></font></font></p>
复制代码 . u, O0 P1 j) |( h1 V% l
|