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

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

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

  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)
    8 p! ~" N  L' J
  2. {
    7 z/ [* \3 j: V/ _  R
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    # q2 H/ z5 j' H$ d
  4.     recv_end_flag = 1;
    # w$ P' \, ~/ q; P* o. j3 T
  5.     __HAL_UART_CLEAR_IDLEFLAG(&huart1);
    6 o4 `' r$ t' y* W7 d* D
  6.   /* USER CODE END USART1_IRQn 0 */* \- m$ [& U- M, `# K- d
  7.   HAL_UART_IRQHandler(&huart1);- [- z6 @9 M) B  D) E3 u
  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>
复制代码
* t7 P( W! v% t

在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();
    5 x5 V3 s+ c6 I' q% Z: R
  2.   MX_DMA_Init();& ~9 Q! h0 r, [+ ?9 H/ M3 l. F
  3.   MX_ADC1_Init();
    , |8 k% F8 w7 W0 g
  4.   MX_USART1_UART_Init();
    . N0 k! F/ L* N6 @. v
  5.   /* USER CODE BEGIN 2 */# A% f; N) v" M
  6.     __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);1 S# y; ~) @1 p* U0 [0 I. ?- `
  7.     HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));& O( O  p6 g& z
  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 */6 U0 Y( C7 D" w+ W
  9.   /* USER CODE BEGIN WHILE */2 K% p$ y: J, J+ E; l1 L
  10.   while (1)
    & ]& A) j) U; }5 o' [
  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);
    6 ^% }% K: r6 T+ l- N
  12.         HAL_Delay(200);
    ' n6 ]9 C6 Q$ J: S1 w
  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, Q& L8 b" x) h* y
  14.         if(recv_end_flag ==1){
    / w& j1 i- _/ F8 E: `8 d3 @
  15. / _0 y1 o: f$ ^2 V( O& @$ _
  16.         }
    4 S# |* K7 j- Y
  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 */9 s0 {" ]2 _2 O
  18.   }% k8 G' K$ e+ z& b; ~  e
  19.   /* USER CODE END 3 */
    ; ]4 p& T4 M2 \  _. p
  20. }</font></font></font></p>
复制代码
5 v6 G0 ?5 r, r+ Q8 u  u9 h+ @
收藏 评论0 发布时间:2021-11-13 23:00

举报

0个回答

所属标签

相似分享

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