你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32G4 STM32CubeMX—串口空闲中断+DMA接收

[复制链接]
STMCU小助手 发布时间:2021-11-13 23:00
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中添

  1. <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
  2. {5 y  g# Z) D3 `1 m9 P, A) t
  3.   /* USER CODE BEGIN USART1_IRQn 0 */. K* v. e' I, K$ Y! e
  4.     recv_end_flag = 1;# R$ B6 e, H6 O1 F' O: F3 }
  5.     __HAL_UART_CLEAR_IDLEFLAG(&huart1);8 \5 B7 X+ W! q0 x
  6.   /* USER CODE END USART1_IRQn 0 */1 F4 @4 p# S7 {- Q; h) p9 C; H
  7.   HAL_UART_IRQHandler(&huart1);8 P! e" O1 N! L. j4 D$ p2 Q! x
  8.   /* 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中加上

  1. <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
  2.   MX_DMA_Init();$ n) N/ I9 }: {: L9 u9 G# k
  3.   MX_ADC1_Init();
    # m# j8 ^/ O( p2 F! P' j
  4.   MX_USART1_UART_Init();; W% N# v, H- M- J- ^+ X* N9 r6 i  Y
  5.   /* USER CODE BEGIN 2 */
    6 u- {+ O& k0 H5 Q8 S1 {
  6.     __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
      Z8 D: |. P9 @
  7.     HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));# i7 S+ b0 o/ ^/ M" o
  8.   /* 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
  9.   /* USER CODE BEGIN WHILE */5 [6 T- f. @* l* u; G9 K% u
  10.   while (1)
    # d, Q) v- R: i& a+ t( \
  11.   {</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
  12.         HAL_Delay(200);; q4 Q7 u& K$ X
  13.         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
  14.         if(recv_end_flag ==1){+ K( ]' f  R3 b  U; C# ~

  15. , @8 F/ p3 y. L% x4 l5 c
  16.         }$ H2 d. |0 j! h1 `% B
  17.     /* 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
  18.   }0 L3 C, _5 {& q3 b4 _0 T; h! M
  19.   /* USER CODE END 3 */& D- X# g- E. M1 S) b
  20. }</font></font></font></p>
复制代码

6 \. ~; p" a' {0 c7 a/ |: M6 V
收藏 评论0 发布时间:2021-11-13 23:00

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版