systick 时间修改_STM32中,systick具体延时时间怎么计算的?

展开全部

SysTick 就是一个定时器而已,只是它放在了NVIC(嵌套中断控制器)中,主要的目的是为了给操作系统提32313133353236313431303231363533e59b9ee7ad9431333365643631供一个硬件上的中断(号称滴答中断)。

滴答中断:操作系统进行运转的时候,也会有“心跳”。

它会根据“心跳”的节拍来工作,把整个时间段分成很多小小的时间片,每个任务每次只能运行一个“时间片”的时间长度就得退出给别的任务运行,这样可以确保任何一个任务都不会霸占整个系统不放。

这个心跳,可以通过定时器来周期性触发,而这个定时器就是systick。很明显,这个“心跳”是不允许任何人来随意地访问和修改的。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息。

{

SysTick_Current=0; //当前值为0

SysTick_Reload=72000; //重装载寄存器,系统时钟72M,中断一次1mS(1ms=0.001s=1/72M*72000)

TimingDelay =nTime; // 读取延时时间

SysTick_CSR=0x07; // 使能SysTick计数器

while(TimingDelay!= 0); // 判断延时是否结束

SysTick_CSR=0x06;// 关闭SysTick计数器

}

void Delay_Nus(uint32_t nTime)      //us级的延时函数

{ SysTick_Current=0;

SysTick_Reload=72; //重装载寄存器,系统时钟20M中断一次1mS

TimingDelay=nTime;

SysTick_CSR=0x07;   // 使能SysTick计数器

while(TimingDelay!= 0); // 判断延时是否结束

SysTick_CSR=0x06;// 关闭SysTick计数器 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值