STM32 笔记 03:如何使用 CubeMX 配置 Timer 输出可变 PWM(正向)

一. 前言

二. CubeMX 配置

1. 定时器和 PWM 参数配置

image-20210419123528498

image-20210419123553294

2. 时钟配置

image-20210419123607290

三. 主要代码

1. 定义定时器控制类,及相关宏定义

/* code begin data type */
typedef struct
{
	TIM_HandleTypeDef* htim;// 需要绑定的定时器句柄,如 htim1。

	void (*startPWM_Output)(uint32_t channel);// 让定时器正向通道开始输出 PWM 的方法。
	void (*stopPWM_Output)(uint32_t channel);// 让定时器正向通道停止输出 PWM 的方法。
	void (*changePWM_DutyCycle)(uint16_t pause, uint32_t channel);// 改变定时器指定通道的 PWM 占空比。
}obj_tim_1;// 定时器 1 的控制类
/* code end data type */

2. 创建定时器控制类实例,并声明要实现的函数

/* code begin variable definition */
obj_tim_1 user_tim_1;// 定义定时器 1 控制类实例。
/* code end variable definition */
/* code begin function statement */
static void user_tim_1_startPWM_Output(uint32_t channel);// 让定时器正向通道开始输出 PWM 的方法。
static void user_tim_1_stopPWM_Output(uint32_t channel);// 让定时器正向通道停止输出 PWM 的方法。
static void user_tim_1_changePWM_DutyCycle(uint16_t pause, uint32_t channel);// 改变定时器指定通道的 PWM 占空比。
void init_user_tim_1(void);
/* code end function statement */

3. 实现声明的函数

/* code begin function body */
static void user_tim_1_startPWM_Output(uint32_t channel)
{
	HAL_TIM_PWM_Start(user_tim_1.htim, channel);// 开启 PWM 输出。
}
static void user_tim_1_stopPWM_Output(uint32_t channel)
{
	HAL_TIM_PWM_Stop(user_tim_1.htim, channel);// 停止 PWM 输出。
}
static void user_tim_1_changePWM_DutyCycle(uint16_t pause, uint32_t channel)
{
	__HAL_TIM_SET_COMPARE(user_tim_1.htim, channel, pause);// 改变 PWM 占空比。
}
void init_user_tim_1(void)
{
	user_tim_1.htim = &htim1;
	user_tim_1.startPWM_Output     = user_tim_1_startPWM_Output;
	user_tim_1.stopPWM_Output      = user_tim_1_stopPWM_Output;
	user_tim_1.changePWM_DutyCycle = user_tim_1_changePWM_DutyCycle;
}
/* code end function body */

4. 声明全局函数和变量

/* code begin function statement */
void init_user_tim_1(void);// 初始化定时器 1,需要在使用 user_tim_1 前调用。
/* code end function statement */
/* code begin variable statement */
extern obj_tim_1 user_tim_1;// 定时器 1 的控制类实例。
/* code end variable statement */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simple Man ZHR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值