打印
[STM32]

滴答定时器

[复制链接]
1628|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanghlady|  楼主 | 2014-10-22 13:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
void delay_ms(u16 nms)
{                                     
        u32 temp;       
  SysTick->CTRL&=0xfffffffb;//bit2Çå¿Õ,Ñ¡ÔñÍⲿʱÖÓ  HCLK/8       
        SysTick->LOAD=(u32)nms*fac_ms;//ʱ¼ä¼ÓÔØ(SysTick->LOADΪ24bit)
        SysTick->VAL =0x00;           //Çå¿Õ¼ÆÊýÆ÷
        SysTick->CTRL=0x01 ;          //¿ªÊ¼µ¹Êý  
        do
        {
                temp=SysTick->CTRL;
        }
        while(temp&0x01&&!(temp&(1<<16)));//µÈ´ýʱ¼äµ½´ï   
        SysTick->CTRL=0x00;       //¹Ø±Õ¼ÆÊýÆ÷
        SysTick->VAL =0X00;       //Çå¿Õ¼ÆÊýÆ÷                      
}
这个程序一直停留在DO WHILE 处,跳不出来,temp&(1<<16)好像一直没有变化,定时器第16位没有被置一,是什么的原因

相关帖子

沙发
ayb_ice| | 2014-10-23 14:30 | 只看该作者
时钟源不对吧
再说temp&0x01也不对,前面设置为0,后面怎么可能为1呢

未命名.PNG (36.47 KB )

未命名.PNG

使用特权

评论回复
板凳
henglin| | 2015-11-15 13:26 | 只看该作者
以后 延时 劲量不要用这样的老土方式  可以充分利用定时器去做   不要让MCU 在死循环里  浪费时间  别的事情也没有办法处理

使用特权

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

本版积分规则

个人签名:温婉有力、从容笃定

10

主题

94

帖子

0

粉丝