代码段 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); } }
|
版权声明:本文为CSDN博主「韦东山」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/thisway_diy/article/details/118213054