硬汉嵌入式论坛

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

[ThreadX全家桶] stm32h7xx_hal_timebase_tim基准时钟不准

[复制链接]

14

主题

50

回帖

92

积分

初级会员

积分
92
发表于 2025-12-4 21:20:07 | 显示全部楼层 |阅读模式
1、问题:STM32H735 + ThreadX + netxduo + filex,使用TIM5(或者TIM6)做为HAL的基准时钟,STM32CubeMX配置完成,生成代码;结果基准时钟中断时间不准,不管怎么修改基准时钟配置都可能时500ms(有时候时10ms)进一次中断,很稳定。
500ms(或10ms)的来由,是系统起来了,每次进中断读系统tick的时间差发现的。

2、尝试解决:查了下代码。发现基准时钟(tick interrupt priority)默认优先级是15,将这个改成小于15的值,定时器进中断时间时间就和系统tick一致了。

3、使用ThreadX自带的CPU率统计,发现没干什么事情,系统CPU使用了基本都在50%,偶尔跳到90几,感觉不正常(我另一个类似功能板子,使用的H743比这个任务还多,只有1~3%左右,这个H735功能都是H743移植过来,并裁减了部分功能的,理论上使用率更低才对),有没有相同经历的小伙伴!!
screenshot_2025-12-04_21-10-18.png
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-5 10:58:21 | 显示全部楼层
1、HAL库时间基准和ThreadX时间基准,可以都使用systick


ThreadX的系统时钟节拍和STM32的HAL库时间基准都使用Systick的简单方法
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=99213


2、然后就是Systick优先级问题,这个默认在low level init.s文件里面已经将systick配置为小于15了


@
@    /* Configure handler priorities.  */
@
    LDR     r1, =0x00000000                         @ Rsrv, UsgF, BusF, MemM
    STR     r1, [r0, #0xD18]                        @ Setup System Handlers 4-7 Priority Registers

    LDR     r1, =0xFF000000                         @ SVCl, Rsrv, Rsrv, Rsrv
    STR     r1, [r0, #0xD1C]                        @ Setup System Handlers 8-11 Priority Registers
                                                    @ Note: SVC must be lowest priority, which is 0xFF

    LDR     r1, =0x40FF0000                         @ SysT, PnSV, Rsrv, DbgM
    STR     r1, [r0, #0xD20]                        @ Setup System Handlers 12-15 Priority Registers
                                                    @ Note: PnSV must be lowest priority, which is 0xFF


3、这个可能是你的DWT时钟周期计数器没有正常运行,这个统计是基于DWT时钟周期计数器实现的。




回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2025-12-5 11:25:59 | 显示全部楼层
eric2013 发表于 2025-12-5 10:58
1、HAL库时间基准和ThreadX时间基准,可以都使用systick

1、ThreadX的系统时钟节拍和STM32的HAL库时间基准都使用Systick的简单方法,我使用了,MX_SDMMC1_MMC_Init函数超时了。不知道为什么,之前H743的板子我也用过这个方法

2、Systick没问题,主要是基础时钟优先级问题

3、这个应该是运行起来了,准不准不好测试
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-5 11:44:35 | 显示全部楼层
walk 发表于 2025-12-5 11:25
1、ThreadX的系统时钟节拍和STM32的HAL库时间基准都使用Systick的简单方法,我使用了,MX_SDMMC1_MMC_Ini ...

1、这个里面是个ThreadX大综合,可以把Systick设置为最高优先级0
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=103554

2、这里明白你的意思了,你这里设置的硬件定时器
3、简单使用DWT测试个延迟函数时间戳是否对就行。
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2025-12-5 12:18:03 | 显示全部楼层
eric2013 发表于 2025-12-5 11:44
1、这个里面是个ThreadX大综合,可以把Systick设置为最高优先级0
https://forum.anfulai.cn/forum.php?m ...

使用定时器测试了一下DWT计数,是准的,1ms差不多550000个基数(主频550Mhz)
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2025-12-5 12:22:53 | 显示全部楼层
STM32H735是不是有什么坑,之前用STM32H743没有出现过这样的情况。
H735电源坑已踩,硬件照参考手册搞了一下,选了一种内核供电方式,电源的选PWR_SMPS_2V5_SUPPLIES_LDO,默认PWR_DIRECT_SMPS_SUPPLY,烧完程序就不能发现MCU内核了。。因为没有电了。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-5 13:18:53 | 显示全部楼层
walk 发表于 2025-12-5 12:22
STM32H735是不是有什么坑,之前用STM32H743没有出现过这样的情况。
H735电源坑已踩,硬件照参考手册搞了一 ...

感觉应该是那里还没处理好,因为这个移植都是基于内核的移植。
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2025-12-5 15:42:22 | 显示全部楼层
使用Azure RTOS TraceX抓了一下,使用率很低
screenshot_2025-12-05_15-39-09.png
screenshot_2025-12-05_15-39-57.png
回复

使用道具 举报

6

主题

690

回帖

708

积分

金牌会员

积分
708
QQ
发表于 2025-12-5 23:36:26 | 显示全部楼层
walk 发表于 2025-12-5 15:42
使用Azure RTOS TraceX抓了一下,使用率很低

移植了threadx+trace了啊
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2025-12-5 23:58:23 | 显示全部楼层
yklstudent 发表于 2025-12-5 23:36
移植了threadx+trace了啊

不知道为什么调用threadx自动CPU使用率统计数据不对,所以使用TraceX看看
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120448
QQ
发表于 2025-12-6 10:37:26 | 显示全部楼层
walk 发表于 2025-12-5 15:42
使用Azure RTOS TraceX抓了一下,使用率很低

说明移植的统计实现确实有问题。
回复

使用道具 举报

14

主题

50

回帖

92

积分

初级会员

积分
92
 楼主| 发表于 2025-12-7 23:13:23 | 显示全部楼层
eric2013 发表于 2025-12-6 10:37
说明移植的统计实现确实有问题。

全是工具自动生成的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-10 17:27 , Processed in 0.057234 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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