在配置基本定时器时 使用STM32CubeMX 配置 配置有下图
TIM6 内部时钟为90MHz 分频器配置成 4499 也就是20KHz 50us
自动重载值为0 启用中断
void MX_TIM6_Init(void)
{
TIM_MasterConfigTypeDef sMasterConfig = {0};
htim6.Instance = TIM6;
htim6.Init.Prescaler = 4499;
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
htim6.Init.Period = 0;
if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
HAL_TIM_Base_Start_IT(&htim6);
}
/**
* @brief Period elapsed callback in non blocking mode
* @param htim pointer to a TIM_HandleTypeDef structure that contains
* the configuration information for TIM module.
* @retval None
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* Prevent unused argument(s) compilation warning */
LED_R_T();
/* NOTE : This function Should not be modified, when the callback is needed,
the __HAL_TIM_PeriodElapsedCallback could be implemented in the user file
*/
}
但我用示波器在LED上看不到任何波型
当把 htim6.Init.Period 值配置为1时 在示波器上能看到高电平宽度为100us 频率为10KHz
也就是说 htim6.Init.Period(自动重载值) 值不能为0 但在STM32CubeMX 上有如下图解释
也就是说这个Period(自动重载值)值是介于 0 到 65535之间呀
但这个值包不包括0呀
可能表达的不是很清楚 不会叙述
|