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

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

[复制链接]
STMCU小助手 发布时间:2021-11-13 23:00
STM32CubeMX—串口空闲中断+DMA接收

1)、串口一配置。

2)、开启中断模式

3)、生成工程代
. @6 W9 ~, }2 [4 s# Y& |

+ J" Q& ^! h5 b; t/ ^6 @  O8 v

3 K4 [* u- R6 c3 B+ u. Q

在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 w1 i/ G" O3 o8 I9 G
  2. {
    9 V; y; n2 b; R% y8 _  ^% g" H
  3.   /* USER CODE BEGIN USART1_IRQn 0 */+ z0 J. ]1 O* K) {$ V0 N1 d0 E
  4.     recv_end_flag = 1;) M9 ]4 I" F) ]* T! d
  5.     __HAL_UART_CLEAR_IDLEFLAG(&huart1);
    0 u+ `3 k" s% |0 @) n
  6.   /* USER CODE END USART1_IRQn 0 */: t# Z2 U7 G; F2 C  I
  7.   HAL_UART_IRQHandler(&huart1);
    8 g: _! m/ L# Z1 }
  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>
复制代码

# n! |8 \, V4 s

在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();
    0 c" S- ~+ h# k$ J) w$ V# K
  2.   MX_DMA_Init();
    ; i5 Y- y/ V. N
  3.   MX_ADC1_Init();' w' ~' |8 f2 f+ G7 D
  4.   MX_USART1_UART_Init();* i$ s  G5 {6 F0 |1 T* n
  5.   /* USER CODE BEGIN 2 */
    ; ~3 Z, J) D; B: o
  6.     __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
    * ~0 Q$ g' W% z; |! i! c9 E  ?$ j
  7.     HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));7 b& X3 [2 u7 a# I/ L$ 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 */
      v; |  S/ y' M9 i% U! ^9 S
  9.   /* USER CODE BEGIN WHILE */
    % c7 n. N" [0 J9 I. P) |" i" i
  10.   while (1)
    ( e2 j- L- X) T, S
  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);* N- \9 }! w8 z* L
  12.         HAL_Delay(200);2 |( ?2 E; y& ?; y2 l, O/ o
  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);
    : j8 k$ l1 U$ S) z
  14.         if(recv_end_flag ==1){
    # m. Y9 {+ L- x9 ^0 v
  15. 8 V0 W: |: e4 f, K9 Z+ O
  16.         }
    , z1 y, `2 X7 p8 g" f* @
  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 */
    # V$ {+ Z) ?, j  D  l% f6 {% J# u
  18.   }$ v, j& n/ p. C( r) B
  19.   /* USER CODE END 3 */3 J& _, }* b3 `
  20. }</font></font></font></p>
复制代码
) a! f9 [' C7 {' V5 f4 {# F
收藏 评论0 发布时间:2021-11-13 23:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版