- SysTick系统定时器是属于Cortex-M内核中的一个外设,内嵌在NVIC中。
- SysTick系统定时器含有一个计数宽度为24Bit(0xFFFFFF,0~1677216)的向下递减(工作模式)的自动重装载计数器,计数器每计数一次的时间为1/CLKSource(工作周期,F103为72Mhz,就是1/72Mhz)。一般我们设置CLKSource为系统时钟。以F103为例,CLKSource可以配置为72Mhz。
- 当重装载值寄存器的值递减到0的时候,SysTick系统定时器可以配置产生一次中断,以此循环往复。
- SysTick系统定时器是属于Cortex-M内核的外设,所以一般基于Cortex-M内核的单片机都具有这个系统定时器。这使得软件在Cortex-M单片机中可以很容易得移植。
- SysTick系统定时器可以用于 *** 作系统,用于产生时基,维持 *** 作系统的心跳。一般 *** 作系统都需要一个时基,进行任务的调度、同步等功能实现。
- SysTick系统定时器最常用的功能,还是计数。比如用来进行微妙、毫秒延时,以此产生特定时序。
static __IO uint32_t TimingDelay; void SysTick_Init() { if(HAL_SYSTICK_Config(SystemCoreClock/100000)) { while(1); } } void Delay_us(__IO uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); } void TimingDelay_Decrment() { if(TimingDelay != 0x00) { TimingDelay--; } }
我们在stm32f1xx_it.c中,把文件TimingDelay_Decrment();函数放到滴答定时器中断中。
void SysTick_Handler(void) { HAL_IncTick(); TimingDelay_Decrment(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)