OpenEdv-开源电子网

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

f1 SysTick定时器用作延时 程序 一直卡在循环里是怎么回事啊

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-8-19
在线时间
3 小时
发表于 2017-8-19 21:53:24 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 sszl 于 2017-8-19 22:03 编辑

void delay_ms(uint16_t ms)
{
               
         uint16_t temp;
         uint16_t cnt = 0;
         uint8_t number=0;
         cnt = ms;
         if(ms > 100)
         {
                 number = ms/100;
                 cnt = 100;
                 
         }
         do
         {
                 temp = SysTick->LOAD = cnt * (SystemCoreClock /1000);
                 SysTick->VAL = 0x00;
                 SysTick->CTRL &= ~(SysTick_CTRL_CLKSOURCE|SysTick_CTRL_TICKINT);
                 SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;//¿aÆô¶¨ê±Æ÷
                 do
                 {
                        temp = SysTick->CTRL; //程序一直卡在这
                 }while((temp&0x01)&&!(temp&(1<<16)));
                 
                        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
                 SysTick->VAL = 0x00;
                 ms-=100;
                 if(ms<=100)
                 {
                        cnt = ms;
                 }
        }while(number--);
}
我调试过 SysTick->VAL的值在 更新 是正常的 就是 那个 标志(SysTick->CTRL(16)) 一直检测不到


最佳答案

查看完整内容[请看2#楼]

我知道了 函数中的 变量 uint16_t temp; 应该 设置为 uint32_t 因为 SysTick->CTRL 是 32 位寄存器 并且 我们 需要 的是 他的 16 位 数据 如果使用uint16_t 就读不到 那个数据 哎 我 太马虎 了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-8-19
在线时间
3 小时
 楼主| 发表于 2017-8-19 21:53:25 | 显示全部楼层
我知道了 函数中的 变量 uint16_t temp; 应该 设置为 uint32_t 因为 SysTick->CTRL 是 32 位寄存器 并且 我们 需要 的是 他的 16 位 数据
如果使用uint16_t 就读不到 那个数据
哎 我 太马虎 了
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-8-19 21:54:54 | 显示全部楼层
检查systick有没有初始化
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-8-19
在线时间
3 小时
 楼主| 发表于 2017-8-19 21:59:18 | 显示全部楼层
zuozhongkai 发表于 2017-8-19 21:54
检查systick有没有初始化

这个函数 就自己实现了 初始化啊
不需要初始化
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 22:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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