OpenEdv-开源电子网

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

小白的学习时钟的疑问,各路大神解释一下

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2023-1-22
在线时间
4 小时
发表于 2023-3-5 14:50:20 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 songyang 于 2023-3-5 15:25 编辑

/*****************************    疑问1    **********************************/
我调用了SysTick_Config(SystemCoreClock / 1000) 函数,在没分频的情况下 ,72000次产生一次中断,我在中断函数里SysTick_Handler(void) 加了个减法的倒计时,做为延迟。

void SysTick_Handler(void)
{
        #if 1
        if(currentSystick != 0)
        {
                currentSystick--;
        }
        #endif
}

void DelayMs(uint32_t ms)
{
        currentSystick = ms;
        while(currentSystick != 0){}
}


DelayMs(1000)  应该是1秒的间隔,为什么实际使用的时候是10秒?

/*****************************    疑问2    **********************************/

void DelayUS(uint32_t us)
{
        uint32_t temp;
    SysTick->LOAD = 72000 * us;

    SysTick->VAL=0X00;
    SysTick->CTRL=0X01;
    do
    {  
        temp=SysTick->CTRL;
    }while((temp&0x01)&&(!(temp&(1<<16))));
    SysTick->CTRL=0x00;
    SysTick->VAL =0X00;
}

直接使用了 SysTick来设置的话,如果同时也开启了时钟中断,那么会影响到中断的频率么?

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

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2023-1-22
在线时间
4 小时
 楼主| 发表于 2023-3-5 15:25:53 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2023-3-7 23:34:50 | 显示全部楼层
1秒和10秒,应该很容易发现问题了吧...说明你的计算出现了10倍错误
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 15:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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