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

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 回答时间:昨天 10:10

【代码编写】

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 回答时间:昨天 10:12

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

image.png

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

image.png

所属标签

相似分享

官网相关资源

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