FREERROS--vTaskDelay延时时间明显较长

在做FREERTOS项目中,发现vTaskDelay延时时间明显较长,解决问题后将问题和解决方案总结,希望对大家有所帮助

1 检查外部晶振软件设置与硬件是否对应

2 检查系统时钟Tick挂在哪个时钟上面

在FREERTOSconfig.h文件中找到configCPU_CLOCK_HZ定义是否挂在总线时钟上,即

#define configCPU_CLOCK_HZ                (SystemCoreClock)

3 不要自己手动定义configSYSTICK_CLOCK_HZ,在port.c的文件中系统会设置configSYSTICK_CLOCK_HZ

#ifndef configSYSTICK_CLOCK_HZ
	#define configSYSTICK_CLOCK_HZ configCPU_CLOCK_HZ
	/* Ensure the SysTick is clocked at the same frequency as the core. */
	#define portNVIC_SYSTICK_CLK_BIT	( 1UL << 2UL )
#else
	/* The way the SysTick is clocked is not modified in case it is not the same
	as the core. */
	#define portNVIC_SYSTICK_CLK_BIT	( 0 )
#endif

上述代码中如果手动设置会导致SysTick的第二位状态寄存器清零,也就是使用外部时钟源,这不是总线时钟,而SysTick的第二位状态寄存器为1时,系统使用内部时钟源 也就是总线时钟,所以不要手动定义configSYSTICK_CLOCK_HZ。

4 如果换晶振使用,例如官方默认25MHZ外部晶振,而自己使用8MHZ晶振,更改官方库定义后,运行SystemCoreUpdate()函数

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糕手li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值