SYSTICK定时寄存器
CTRL
第16位 countflag 计时完成标志位,1为计时完成,
第2位 CLKSOURCE 时钟选择
第1位 TICKINT SYSTICK定时器中断使能
第0位 ENABLE SYSTICK定时器使能
LOAD
RELOAD 重装载的值,当VAL寄存器的CURRENT递减为0时,把RELOAD的值重装到CURRENT
VAL
CURRENT 递减的值,到0结束。
void sys_delay(u32 xhm)
{
u32 a;
SysTick_CLKSouurceConfig(SysTick_CLKSource_HCLK_Div8);//选择8分屏
SysTick->LOAD=xhm*9000; //计算时间,晶振跳9次等于1微秒 9000为1毫秒9000000为1S
SysTick->VAL=0x00; //把val寄存器清零
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;//开启定时。
do
{
a=SysTick->CTRL;//一直检测标志位
}
while(!(a&(1<<16)));//标志位1时,取反 出循,或者把结果循环判断是否为0,1&任何数都是任何数
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;//停止定时
SysTick->VAL=0x00;//把val寄存器清零
}
标签:ENABLE,VAL,CTRL,寄存器,STM32,SYSTICK,SysTick,定时 From: https://blog.51cto.com/u_15919473/5959977