硬汉嵌入式论坛

 找回密码
 立即注册
查看: 272|回复: 3
收起左侧

[UART] H750 串口调试压力计BUG求助

[复制链接]

5

主题

16

回帖

31

积分

新手上路

积分
31
发表于 2025-4-2 15:30:57 | 显示全部楼层 |阅读模式
我的工程中利用TIM7定时触发中断,发送读命令给压力计。TIM7和UART2配置如下:

TIM7配置

TIM7配置

UART配置

UART配置

UART配置

UART配置

发送代码:
[C] 纯文本查看 复制代码
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim == &htim7) // Check if the interrupt is from TIM7
  {
    requestPressureSensorData(); // Request pressure sensor data
  }
}
void requestPressureSensorData(void)
{
  HAL_UART_Transmit_DMA(&huart2, PRESSURE_SENSOR_READ_VALUE_COMMAND, PRESSURE_SENSOR_CMD_LENGTH);
}
#define PRESSURE_SENSOR_READ_VALUE_COMMAND (const uint8_t[]){0x01, 0x03, 0x00, 0x04, 0x00, 0x01, 0xC5, 0xCB}
#define PRESSURE_SENSOR_CMD_LENGTH         8


出现问题为发送的值变更为  01 03 00 04 00 00 00 00
如果使用UART 轮询模式发送就没有这个问题。


另外这里还有一个问题需要求助大家,之前没有使用TIM7时,发现UART DMA正常模式发送并不会进入回调函数,这个原因是什么?


回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-4-2 15:37:20 | 显示全部楼层
刚才又试了一下,这个问题是在TIM7中断中调用DMA导致的吗?如果是,是因为什么?和优先级有关系吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-2 16:22:27 | 显示全部楼层
ylun 发表于 2025-4-2 15:37
刚才又试了一下,这个问题是在TIM7中断中调用DMA导致的吗?如果是,是因为什么?和优先级有关系吗?

这里有个关键问题,每次发送前,怎么保证上次HAL_UART_Transmit_DMA已经发送完成了。
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-4-2 17:11:51 | 显示全部楼层
eric2013 发表于 2025-4-2 16:22
这里有个关键问题,每次发送前,怎么保证上次HAL_UART_Transmit_DMA已经发送完成了。

我的定时器设置是1s中断一次,这个时间应该足够DMA发送完成吧?您的意思是不建议使用定时器触发串口DMA发送?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-25 22:03 , Processed in 0.380262 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表