运用Systick编写延时函数以及遇到的问题及其解决方法

运用Systick编写延时函数以及遇到的问题及其解决方法

我对Systick的理解

Systick属于Cotex-M4内核中的外设,是一个24位的向下递减计数器,我们每次所配置是PLL锁相环的时钟,正是Systick的时钟;定时器都有一个自动重装载值寄存器,当自动重装载值递减到0的时,会产生一次中断,而我们可以通过改变这个重装载值,来设定我们要的延时时间,从而起到延时作用。

开发平台

1、运用STM32F429在标准库上开发
2、KEIL 5.25.2.0

初始化Systick

void SYSTICK_INIT(uint16_t fosc)	//F429的时钟频率为180M,所以填入的参数我会填入180
{					//这样我每一次进入中断的时间为1us。(180/180M = 1us)
    if(SysTick_Config(fosc)==1)		//SysTick_Config()已经在cm4.h文件里写好,直接调用
    {
        while(1);
    }
}

编写延时函数思路

编写延时函数的思路是:我定义一个全局变量,当Systick每次进入中断时,中断服务函数让这个全局变量自减1,而我要延时多少秒,就进入这个中断多少次,而当进入延时函数时,我用一个while一直死循环来等待这个全局变量减到0为止,从而起到了精准的延时效果。

定义一个全局变量

__I
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值