采用单片机的定时计数器进行毫秒和微妙级延时,精度较准。检测溢出时产生的标志位来判断延时到达。下面以STM8L101芯片为例及配合代码说明。
一、实现原理:
1、初始化Timer2时钟源(附上相应代码)
void TIM2Init (void)
{
TIM2_DeInit ();
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
TIM2->CR1 &= ((uint8_t)(~TIM_CR1_CMS)) & ((uint8_t)(~TIM_CR1_DIR));
TIM2->CR1 |= ( (TIM2_CounterMode_Up) | (TIM_CR1_ARPE) ); /*counter up, enable Auto-Reload*/
TIM2_SetCounter(0x00);
TIM2->IER &= (~TIM2_IT_Update); /*disable timer2 interrupt*/
TIM2->CR1 &= (~TIM_CR1_CEN); /*disable timer2*/
}
打开外设时钟源;
选择向上计数模式和打开自动重加载功能;
填装计数器的初始值;
关闭Timer2中断功能;
关闭Timer2;
2、毫秒延时代码示例
void DelayMs (uint16_t timeVal)</