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

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

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

1)、串口一配置。

2)、开启中断模式

3)、生成工程代
( C: f, i' O5 o9 p- w

6 R2 }, c5 p; A( |# Y" K
: _/ v6 O. ~3 c. i/ v

在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)! [) u, \. t. t% B, F* S9 X
  2. {
    0 S- J: W$ F+ N: v2 }! a. h# V
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
    ! n# I% A' I' b
  4.     recv_end_flag = 1;
    ! @' @8 k% C% z; Y! L) q& O9 q
  5.     __HAL_UART_CLEAR_IDLEFLAG(&huart1);
    . @1 y$ n* O  Y, t' c- K
  6.   /* USER CODE END USART1_IRQn 0 */
    : K7 W# }) v# f. M. L1 \
  7.   HAL_UART_IRQHandler(&huart1);
    " A$ b8 P8 s$ ^! P5 s/ @, h
  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>
复制代码
% t0 ~! \) K, v- @5 J% E; p' g

在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();& l9 o( N0 u; T! L" x5 ?
  2.   MX_DMA_Init();7 Y2 z+ S9 v) m# W6 \
  3.   MX_ADC1_Init();- ?% o3 e8 J2 x% j% O6 @7 G
  4.   MX_USART1_UART_Init();
    * W: N; ^7 K+ R4 z4 V! G. P5 Z
  5.   /* USER CODE BEGIN 2 */$ ^! h$ a, v- e1 Z# m3 [
  6.     __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);! J* h+ k. b0 {- a: c
  7.     HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));
    9 i+ H9 \9 f; `2 q
  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 */% t  n  e4 [" O
  9.   /* USER CODE BEGIN WHILE */; S6 ]( `. ^, U3 V
  10.   while (1)
    ; e) m( H3 N+ F5 r  ?2 {
  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);" y' C$ }( j$ n# C
  12.         HAL_Delay(200);. X# H3 u7 A, r; \4 q
  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);  U" v, _! F/ x* [9 ^0 U& T  Y3 Y
  14.         if(recv_end_flag ==1){* Q" A7 a! z1 l1 ]( c4 W

  15. + f" r# z' L/ d7 x' K) J, c
  16.         }1 X) `; S% a! f6 E- o
  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 */3 o. e. R/ L9 x9 ^8 r" i! ]# @- S
  18.   }/ T6 L5 \7 V" s# Y0 _1 y
  19.   /* USER CODE END 3 */4 D+ U  G5 Q! D! W, l9 {
  20. }</font></font></font></p>
复制代码

/ ~6 z& v0 W9 ~# F, H
收藏 评论0 发布时间:2021-11-13 23:00

举报

0个回答

所属标签

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