侧边栏壁纸
  • 累计撰写 35 篇文章
  • 累计创建 9 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

STM32定时器开发基础及PWM波的生成

Hollies
2023-11-12 / 0 评论 / 0 点赞 / 30 阅读 / 3785 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-06-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. 基础知识

STM32定时器开发基础及PWM波的生成_图1.pngSTM32定时器开发基础及PWM波的生成_图2.png

2. 配置

在STM32CubeMX进行相关配置

STM32定时器开发基础及PWM波的生成_图3.png

STM32定时器开发基础及PWM波的生成_图4.png

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\%

0

评论区