systick定时器工作原理(systick最长定时时间)
1:属于Cortex内核的外设,内嵌在NVIC中
2:24位向下递减的计数器
3:重装载数据寄存器见到0时系统定时器就会产生一次中断
4:仅仅只有4个寄存器来控制
来源于Cortex-M3权威指南
针对于上面所述的时钟来源,参考时钟数如下图
时钟树
由上可以看出,时钟源AHB/8或AHB
如下是利用系统定时器产生1us的设置
void delay_us(u32 uS){ //uS微秒级延时程序(参考值即是延时数,72MHz时最大值233015) SysTick->LOAD=AHB_INPUT*uS; //重装计数初值(当主频是72MHz,72次为1微秒) SysTick->VAL=0x00; //清空定时器的计数器 SysTick->CTRL=0x00000005;//时钟源HCLK,打开定时器 while(!(SysTick->CTRL&0x00010000)); //等待计数到0,第16为倒数为0则会置位 SysTick->CTRL=0x00000004;//关闭定时器}
注意其时钟源是HCLK,但实际上是FCLK,因为其与AHB时钟HCLK是相互连通的
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com