是从0开始计数 计数到counter值为止
所以在while里面要判断计数值不为us
没用到中断 所以不用开启定时器中断
- void TIM_Delay_us(uint16_t us,TIM_HandleTypeDef* htim)
- {
- TIM_Base_InitTypeDef TIM_Str={0};
- TIM_Str.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;
- TIM_Str.Prescaler=50-1;
- TIM_Str.Period=us;
- TIM_Str.CounterMode=TIM_COUNTERMODE_UP;
- TIM_Base_SetConfig(htim->Instance,&TIM_Str);
-
- HAL_TIM_Base_Start(htim);
- while(__HAL_TIM_GET_COUNTER(htim)!=us);
- HAL_TIM_Base_Stop(htim);
- }
- void TIM_Delay_ms(uint16_t ms,TIM_HandleTypeDef* htim)
- {
- TIM_Base_InitTypeDef TIM_Str={0};
- TIM_Str.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;
- TIM_Str.Prescaler=50000-1;
- TIM_Str.Period=ms;
- TIM_Str.CounterMode=TIM_COUNTERMODE_UP;
- TIM_Base_SetConfig(htim->Instance,&TIM_Str);
-
- HAL_TIM_Base_Start(htim);
- while(__HAL_TIM_GET_COUNTER(htim)!=ms);
- HAL_TIM_Base_Stop(htim);
- }
-
|