OpenEdv-开源电子网

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

关于M3的系统滴答定时器,好神奇

[复制链接]

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
发表于 2022-6-4 14:22:48 | 显示全部楼层 |阅读模式
1金钱
void Systick_Init(void)
{
        SysTick->CTRL &= ~(1 << 2);        //AHB/8=72/8=9Mhz
}




void Delay_ms(unsigned short time)
{
        SysTick->LOAD = time*Sys_ms;
        SysTick->VAL = 0;                                                //清空VAL       
        SysTick->CTRL |= 1 <<0;        //使能Systick
        while(!(SysTick->CTRL & (1 << 16)));                //等待COUNTFLAG标志位=1       
        SysTick->CTRL &= ~(1 << 0);        //关掉计数器
}


不知道为什么,我这样写Systick就是不会下降到0!什么原因????太奇怪了,COUNTFLAG位一直是0,不会变1
请明白的大佬指点一下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-6-4 14:23:32 | 显示全部楼层
他就是一直卡在while里面,我仿真是可以看到他一直会重复计数的,但是就是COUNTFLAG这个标志位一直没变!
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-6-4 14:24:08 | 显示全部楼层
真是气死我了,搞了2天一点头绪都没有,原子哥的代码是可以验证成功的,但是我自己这样写就不行!
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-6-4 15:16:17 | 显示全部楼层
原子用的是do while的形式 你试了吗
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-6-4 15:34:42 | 显示全部楼层
babyrabbit 发表于 2022-6-4 15:16
原子用的是do while的形式 你试了吗

试了,我自己也用了不行关键原子的例程是可以用的,我这不知道是哪里有问题没找出来,炸毛了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 02:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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