/******************************************************************************* * Function Name : delay_us * Description : * Input : - Nus: * Output : None * Return : None * Attention : *******************************************************************************/ void delay_us(u32 Nus) { SysTick_SetReload(delay_fac_us * Nus); SysTick_CounterCmd(SysTick_Counter_Clear); SysTick_CounterCmd(SysTick_Counter_Enable); do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); }
/******************************************************************************* * Function Name : delay_us * Description : 初始化延迟函数 * Input : - Nus: 延时us * Output : None * Return : None * Attention : 参数最大值为 0xffffff / (HCLK / 8000000) *******************************************************************************/ void delay_us(u32 Nus) { SysTick_SetReload(delay_fac_us * Nus); /* 时间加载 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ SysTick_CounterCmd(SysTick_Counter_Enable); /* 开始倒数 */ do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); /* 等待时间到达 */ SysTick_CounterCmd(SysTick_Counter_Disable); /* 关闭计数器 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ }
/******************************************************************************* * Function Name : delay_ms * Description : * Input : - nms: * Output : None * Return : None * Attention : *******************************************************************************/ void _delay_ms(uint16_t nms) { uint32_t temp = delay_fac_ms * nms; if (temp > 0x00ffffff) { temp = 0x00ffffff; } SysTick_SetReload(temp); SysTick_CounterCmd(SysTick_Counter_Clear); SysTick_CounterCmd(SysTick_Counter_Enable); do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); }
/******************************************************************************* * Function Name : delay_ms * Description : 初始化延迟函数 * Input : - nms: 延时ms * Output : None * Return : None * Attention : 参数最大值 nms<=0xffffff*8*1000/SYSCLK 对72M条件下,nms<=1864 *******************************************************************************/ void delay_ms(uint16_t nms) { uint32_t temp = delay_fac_ms * nms; if (temp > 0x00ffffff) { temp = 0x00ffffff; } SysTick_SetReload(temp); /* 时间加载 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ SysTick_CounterCmd(SysTick_Counter_Enable); /* 开始倒数 */ do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); /* 等待时间到达 */ SysTick_CounterCmd(SysTick_Counter_Disable); /* 关闭计数器 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ }
/** * @brief delay_us * @param u32 Nus * @retval None */ void delay_us(u32 us) { uint32_t temp = delay_fac_us * us; int16_t tick = us/1864135; if (temp > 0x00ffffff) temp = 0x00ffffff; do { SysTick_SetReload(temp); SysTick_CounterCmd(SysTick_Counter_Clear); SysTick_CounterCmd(SysTick_Counter_Enable); do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); } while ((Status != SET) && (ButtonPush == B_RESET)); SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); } while((tick-- > 0) && (ButtonPush == B_RESET)); }