STM32F4xx那点事(四)——定时器的使用及配置

在使用单片机时,经常要使用到一定时间的延时,而对于像STM32F405RG这种单片机而言,一方面,由于Cortex-M3/Cortex-M4的主频比较高,如果使用for循环或者while循环,循环的变量非常之大,另一方面,使用SysTick实现,延时比较准确。延时程序如下所示:

void DelayMs(unsigned short Time) 
{      
	SysTick->LOAD=(unsigned long)Time*21000;   
	SysTick->CTRL|=0x01;                   
	while(!(SysTick->CTRL&(1<<16)));   
	SysTick->CTRL=0x00000000;         
	SysTick->VAL=0x00000000;                
}    
 //us
void DelayUs(unsigned long Time) 
{   
    SysTick->LOAD=Time*21;       
	SysTick->CTRL|=0x01;            
	while(!(SysTick->CTRL&(1<<16)));
	SysTick->CTRL=0x00000000;       
	SysTick->VAL=0x00000000;             
}

注意:使用MDK仿真时,仿真界面中时间不能正确反应延时的时间。

猜你喜欢

转载自blog.51cto.com/chasingdreams/2382169