STM32中,systick具体延时时间怎么计算的?

 我来答
刺任芹O
2022-11-16 · TA获得超过6.2万个赞
知道顶级答主
回答量:38.7万
采纳率:99%
帮助的人:8998万
展开全部

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

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

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

这个心跳,可以通过定时器来周期性触发,而这个定时器就是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计数器 }

北京康思
2018-09-20 广告
1、基本功能。市面上的电子负载均有基本的四项功能:恒流、恒压、恒阻和恒功率(安捷伦没有恒功率)。在功能基本相同,精确度相差不大的情况下,怎么判断是否符合要求呢?CHROMA和博计的电子负载只有一套工作电路,就是恒流功能。其他功能是根据欧姆定... 点击进入详情页
本回答由北京康思提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式