代码段 25.3.2 延时函数实现(driver_timer.c)
- /*
- * 函数名:void us_timer_delay(uint16_t t)
- * 输入参数:t-延时时间 us 范围-0~65535us
- * 输出参数:无
- * 返回值:无
- * 函数作用:定时器实现的延时函数,延时时间为 t us,为了缩短时间,函数体使用寄存器操作
- */
- void us_timer_delay(uint16_t t)
- {
- uint16_t counter = 0;
- __HAL_TIM_SET_AUTORELOAD(&htim, t); // 设置定时器自动加载值
- __HAL_TIM_SET_COUNTER(&htim, counter); // 设置定时器初始值
- HAL_TIM_Base_Start(&htim); // 启动定时器
- while(counter != t) // 直到定时器计数从 0 计数到 t 结束循环,刚好 t us
- {
- counter = __HAL_TIM_GET_COUNTER(&htim); // 获取定时器当前计数
- }
- HAL_TIM_Base_Stop(&htim); // 停止定时器
- }
- /*
- * 函数名:void ms_timer_delay(uint16_t t)
- * 输入参数:t-延时时间 ms 范围-0~65535ms
- * 输出参数:无
- * 返回值:无
- * 函数作用:定时器实现的延时函数,延时时间为 t ms
- */
- void ms_timer_delay(uint16_t t)
- {
- int i = 0;
- for(; i<t; i++) {
- us_timer_delay(1000); } }
|