OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...

使用FreeRTOS时Systick时钟的配置

查看数: 14764 | 评论数: 5 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-6-20 15:53

正文摘要:

FreeRTOS按照教程移植好之后就可以使用了。需要注意的是从官网下载的针对keil环境下STM32F103的FreeRTOS文件,使用systick时钟作为rtos的时钟,而这个systick的时钟源会被默认选择为STM32的内核时钟,而不能选择外部 ...

回复

高阳 发表于 2020-6-3 19:53:42
原子的例程 delay_init函数会先初始并配置滴答时钟,但系统运行后被重置了,貌似delay_init中滴答配置是多余的,不过在系统未运行前,如果应用有us级的延时,反而delay函数中还必须配滴答时钟。
所以,如果系统运行前无us级delay,delay_init函数只初始化fac_us ,fac_ms 即可,反之则按原子例程一开始就在delay_init函数中先配置一次滴答定时器,然后系统运行开始(之前的即使有延时也早已执行完毕了),系统自动重置一下滴答定时器后开始执行第一个任务了,这样也没啥影响。
当然楼主说的时基的问题也要注意一下,如果要分频的话,就修改vPortSetupTimerInterrupt函数,把时钟源配置0,就是8分频,此外为了计算LOAD_REG的值时正确的将configSYSTICK_CLOCK_HZ/8,这样时钟源是系统8分频,重载值时按照分频后计算的数值,那应该就没问题了。多补充一点:如果用HAL库还得用两套时基才行,不然HAL库自带延时也会出问题,再次不细说了,论坛里有帖子讲过这个。
Caspar 发表于 2019-11-9 14:07:37
好帖子
xiaohuangyi 发表于 2019-7-3 00:03:42
将configOVERRIDE_DEFAULT_TICK_CONFIGURATION define 成1 会编译出错的, 如果想另其失效,在port.c中将vPortSetupTimerInterrupt(); 执行的地方注释掉就好了
落月枫情 发表于 2016-9-7 21:57:53
多谢楼主整理分享
karaxiaoyu 发表于 2016-6-21 13:44:40
不错!



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 13:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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