Keil RTX systick 初始化

在STM32F215上移植Keil的RTX操作系统,随便设置下就能好使,但是当我想知道systick到底是怎么设置的时候,就得翻翻代码了,原来在 rt_HAL_CM.h中以一个内联函数的形式定义的

复制代码
1 __inline void rt_systick_init (void) {
2   NVIC_ST_RELOAD  = os_trv;
3   NVIC_ST_CURRENT = 0;
4   NVIC_ST_CTRL    = 0x0007;
5   NVIC_SYS_PRI3  |= 0xFF000000;
6 }
复制代码

注意:CLKSOURCE位被写死为内核时钟(FCLK),比较鄙视这种写死的方法,如果要改还得重新编译RTX的库。这里还需要说明下FCLK的频率究竟是多少的问题。简单的说,FCLK和HCLK的频率是相同的,FCLK和HCLK不同的是HCLK即使停了(休眠),FCLK仍然在运行。关于频率相同这一点可以参考STM32库中的misc.c文件中的SysTick_CLKSourceConfig()函数,CLKSOURCE置1的时候是SysTick_CLKSource_HCLK

如果不想改这个文件的话,就只能改 OS_CLOCK 和 OS_TICK这两个宏定义了,最终这两个宏定义的乘积/1E6(OS_TRV,参见RTX_Conf_CM.c文件)会被赋给os_trv常量(参见RTX_lib.c文件)

另注:芯片手册里说明了systick的补偿值固定为15000,是指在CLKSOURCE清0时(HCLK/8)时1ms的时间(不是CM3手册里的10ms时间,鄙视ST不按套路来)

------------------------------------------------------------ 
本文由WindTaiL在cnblogs中发布,转载请注明出处
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值