打印

UC/OS系统移植与SysTick时钟的问题

[复制链接]
344|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小小的人呀|  楼主 | 2018-7-4 07:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.UC/OS用的是SysTick提供的时钟节拍
2.如果程序的延时delay_ms函数用SysTick做。

void delay_ms(u16 nms)
{         
u32 temp;     
SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00;           //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //开始倒数  
do
{
  temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //关闭计数器
SysTick->VAL =0X00;       //清空计数器        
}
两者之间会不会产生冲突!导致UC/OS系统工作不正常?
但是我这样用了还是工作正常的。求解释一下 计数器都关闭了。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

399

主题

399

帖子

0

粉丝