1. 基础知识
2. 配置
在STM32CubeMX进行相关配置
3. 使用
在stm32f4xx_hal_gpio.c中找到
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
复制其中的
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
到main.c中进行重定义:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM1)
{
HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);
}
}
其中小灯闪的实践间隔为
\begin{aligned}
\text{间隔时间}=\frac{\left( Prescaler+1 \right) \times \left( Counter\,\,period+1 \right)}{\text{定时器时钟频率}}\\
\text{频率}=\frac{\text{定时器时钟频率}}{\left( Prescaler+1 \right) \times \left( Counter\,\,period+1 \right)}
\end{aligned}
4. 启动中断
到tim.c中找到
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
到main()函数中添加
HAL_TIM_Base_Start_IT(&htim1);
来打开对应时钟,此时中断实践可使用
用于定时触发某些任务
5. PWM波的生成
在main()函数中添加
HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1);
打开对应时钟对应通道的PWM输出
在while(1)中添加
__HAL_TIM_SET_COMPARE(&htim8, TIM_CHANNEL_1, 420);
来控制PWM的占空比,占空比等于
\text{占空比}=\frac{设定值}{Counter Period}\times100\%
评论区