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

STM32串口空闲中断

[复制链接]
久远寺有珠 发布时间:2021-6-7 14:21
这里介绍一种比较简单好用的串口接收方法——空闲中断
原理就是使能非空中断,在接收到数据的时候进入中断。进入后再使能空闲中断,然后不断接收数据。在接收不到数据之后,触发空闲中断,设置对应标志位,说明完成了一次接收。

一、CubeMX
1.新建工程,选择芯片,F103RCT6
2.设置RCC时钟,选用外部晶振,设置时钟为72MHz
3.使能串口一,设置波特率为115200
4.使能串口一中断
5.生成MDK工程

二、编写代码
1.重定向printf
  1. #include "stdio.h"
  2. int fputc(int ch, FILE *f)
  3. {
  4.   HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  5.   return ch;
  6. }
复制代码
2.使能非空中断
  1. __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);
复制代码
3.编写中断接收函数
  1. void USART1_IRQHandler(void)
  2. {
  3.   /* USER CODE BEGIN USART1_IRQn 0 */
  4.         if((__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET))
  5.         {
  6.                 __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
  7.                 aRxBuffer[aRxCount++] = (uint8_t)(huart1.Instance->DR & (uint8_t)0x00ff);
  8.                 __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE);
  9.         }
  10.        
  11.         if((__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET))
  12.         {
  13.                 __HAL_UART_DISABLE_IT(&huart1, UART_IT_IDLE);
  14.                 aRxState = 1;
  15.         }
  16.         return;
  17.   /* USER CODE END USART1_IRQn 0 */
  18.   HAL_UART_IRQHandler(&huart1);
  19.   /* USER CODE BEGIN USART1_IRQn 1 */

  20.   /* USER CODE END USART1_IRQn 1 */
  21. }
复制代码
5.接收完成后的输出代码
  1.   while (1)
  2.   {
  3.     if(aRxState == 1)
  4.     {
  5.       aRxState = 0;
  6.       HAL_UART_Transmit(&huart1, aRxBuffer, aRxCount, HAL_MAX_DELAY);
  7.       aRxCount = 0;
  8.       memset(aRxBuffer, 0, aRxSize);
  9.     }
  10.     /* USER CODE END WHILE */

  11.     /* USER CODE BEGIN 3 */
  12.   }
复制代码
6.下载代码

时钟树

时钟树

串口配置

串口配置

开启中断

开启中断

效果

效果



idleTest.rar (504.71 KB, 下载次数: 6)
收藏 评论0 发布时间:2021-6-7 14:21

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版