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

2025国庆中秋活动体验报告3-STM32H745之CM4内核不定长中断接收

[复制链接]
lugl 发布时间:2025-10-25 10:00

【前言】

这次使用的健康监测传感器的接口为UART接口,波特率为38400,因为不的工作状态,所接收到的字节数是不一样的,因此,我此次采取STM32H7中的CM4的USART1行进接收,用DMA+空闲中断来实现对数据帧的接收。

【串口输出设计】

1、选择usart1与mks传感器进行连接,开发板的usart1是PB6/PB7为输出接口

image.png

2、选择开发板与stlink的USART3做为日志输出。

【串口配置】

打开stm32cubeMX,导入工程

1、配置USART3为异步,波特率为38400,配置RX、TX的GPIO为PB7、PB6。GPIO为上拉模式。

2、添加DMA-RX接收,配置参数为外设到内存,循环接收,内存为自增长,接收数据宽度为byte配置好后如下图所示:

image.png

开启串口全局中断与DMA中断。

3、同时也配置usart3,波特率为115200

配置好后,使用stm32cubeIDE打开工程。

【代码编写】

1、在stm32h7xx_it.c的串口中断函数中添加空闲中断的代码:

image.png
收藏 评论2 发布时间:2025-10-25 10:00

举报

2个回答
lugl 回答时间:2025-10-25 10:10:36

【代码编写】

1、在stm32h7xx_it.c的串口中断函数中添加空闲中断的代码:

if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) == SET)

{

__HAL_UART_CLEAR_IDLEFLAG(&huart1);

USAR_UART_IDLECallback(&huart1);

}

首先判断是否是usart1的空闲中断,如果是清除中断标志,并执行数据处理的函数USAR_UART_IDLECallback。

2、添加USAR_UART_IDLECallback内容如下:

void USAR_UART_IDLECallback(UART_HandleTypeDef *huart)

{

HAL_UART_DMAStop(&huart1); //停止本次DMA传输

uint8_t data_length = SCREEN_RXBuf_SIZE - __HAL_DMA_GET_COUNTER(&hdma_usart1_rx); //计算接收到的数据长度

printf("Receive Data(length = %d): ",data_length);

HAL_UART_Transmit(&huart3,USART1_Head.RxBuf,data_length,0x200); //测试函数:将接收到的数据打印出去

printf("\r\n");

memset(USART1_Head.RxBuf,0,data_length); //清零接收缓冲区

data_length = 0;

HAL_UART_Receive_DMA(&huart1, (uint8_t*)USART1_Head.RxBuf, SCREEN_RXBuf_SIZE); //重启开始DMA传输 每次255字节数据

}

在main.h中声明结构体:

/ USER CODE BEGIN EFP /

define SCREEN_RXBuf_SIZE 256

typedef struct

{

uint8_t RxBuf[SCREEN_RXBuf_SIZE];

uint8_t Rx_over;

uint32_t Rx_count;

}_USART_Typedef;

extern _USART_Typedef USART1_Head;

/ USER CODE END EFP /

3、在main中添加开启空闲中断以及dma接收的的命令:

__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);

HAL_UART_Receive_DMA(&huart1, (uint8_t*)USART1_Head.RxBuf, SCREEN_RXBuf_SIZE);

lugl 回答时间:2025-10-25 10:12:42

编译代码下载到cortex-M4内核中,接上串口进行测试

image.png

接上传感器后,可以正确的接收到完整的一帧数据:

image.png

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

官网相关资源

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