网站设计大概收费范围,中国房地产信息网官网,北京做网站建设价格,昭通建设局网站1.SysTick简单介绍
SysTick定时器是一个24位的倒计数定时器#xff0c;当计数到0时#xff0c;将从RELOAD寄存器中自动重装载定时初值#xff0c;开始新一轮计数。
SysTick定时器用于在每隔一定的时间产生一个中断#xff0c;即使在系统睡眠模式下也能工作。
关于SysTic…1.SysTick简单介绍
SysTick定时器是一个24位的倒计数定时器当计数到0时将从RELOAD寄存器中自动重装载定时初值开始新一轮计数。
SysTick定时器用于在每隔一定的时间产生一个中断即使在系统睡眠模式下也能工作。
关于SysTick详细说明请查看该文章
STM32—delay和操作系统共用SysTick定时器_systick 与 delay 同时-CSDN博客
2.实现SysTick定时器延时1s
利用SysTick定时器延时1s只需要利用到以下两个函数
SysTick_Config(SystemCoreClock / 1000); //预装载值
void SysTick_Handler(void) //SysTick中断函数
1函数SysTick_Config(SystemCoreClock / 1000);
这个函数是为SysTick定时器设置预装载值其中
SystemCoreClock 表示系统时钟频率
SystemCoreClock / 1000结果为预装载值
定时时间预装载值 / 系统时钟频率。
举个例子
系统时钟频率 SystemCoreClock 72MHz那么其
预装载值 SystemCoreClock / 1000 72 000 000Hz / 1000 72 000
定时时间 预装载值 / 系统时钟频率 72 000 / 72 000 000 1ms。
注表达式SystemCoreClock / 1000中的这个1000可以跟换为其他的数值。常用的有如下几种
SysTick_Config(SystemCoreClock / 1000); //定时1ms
SysTick_Config(SystemCoreClock / 100); //定时10ms
SysTick_Config(SystemCoreClock / 10); //定时100ms
SysTick_Config(SystemCoreClock / 1000 000); //定时1us
2函数void SysTick_Handler(void)
这个函数是SysTick中断函数当SysTick定时时间到进入到该中断函数所以要实现定时1s设置一个计数值即可。
在此以预装载值为SysTick_Config(SystemCoreClock / 1000)为例实现定时1s。
int SysTick_count 0 //SysTick定时器计数变量
void SysTick_Handler(void)
{SysTick_count; //每执行一次中断该计数值加1if(SysTick_count 1000) //每进来一次中断时间为1ms所以当计数到1000*1ms1s即为1s{SysTick_count 0; //将计数变量清0使其执行下一次的1s定时}
}
3.完整代码
#include stm32f10x.h#define SystemCoreClock 72 000 000 //72MHzint SysTick_count 0 //SysTick定时器计数变量void main()
{SysTick_Config(SystemCoreClock / 1000); //预装载值while(1){//此处可添加定时1s需要实现的功能}
}//SysTick中断服务函数
void SysTick_Handler(void)
{SysTick_count; //每执行一次中断该计数值加1if(SysTick_count 1000) //每进来一次中断时间为1ms所以当计数到1000*1ms1s即为1s{SysTick_count 0; //将计数变量清0使其执行下一次的1s定时}
}