[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率) 您所在的位置:网站首页 蓝桥杯pwm [蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)

[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)

2024-07-16 06:42| 来源: 网络整理| 查看: 265

所用工具:

1、芯片: STM32G431RBT6

2、STM32CubeMx软件

3、IDE: MDK-Keil软件

4、STM32G4xxHAL库 

首先是CUBEMX配置

打开系统Debug引脚

设置RCC

设置高速外部时钟HSE 选择外部时钟源

时钟源设置(80MHZ)

省时间可以直接到图中部分输入对应的频率,然后会询问你需不需要自动配置,回车就行

项目文件设置

关键配置:

如下是定时器配置

设置时钟源为内部时钟

启动定时器2的通道2的PWM输出模式

(虽然输出比较模式也能输出可变的PWM,但是需要利用中断,会加大代码复杂度)

将分频值设置为800(最好是800-1),自动重装值为100(最好是100-1)

打开自动重装载使能,否认修改频率或者占空比时可能出现pwm输出停滞一小段的情况

比较值设置为20

这里主频是80Mhz,所以

PWM频率就是80 000 000 / 800 / 100 = 1000HZ

占空比为:20/100 = 20%;

生成代码好后往下看

关键函数:

__HAL_TIM_DIRECTION_STATUS  __HAL_TIM_PRESCALER          __HAL_TIM_SetCounter         __HAL_TIM_GetCounter        __HAL_TIM_SetAutoreload      __HAL_TIM_GetAutoreload      __HAL_TIM_SetClockDivision   __HAL_TIM_GetClockDivision   __HAL_TIM_SetICPrescaler     __HAL_TIM_GetICPrescaler    __HAL_TIM_SetCompare         __HAL_TIM_GetCompare      

 __HAL_TIM_PRESCALER         :修改预分频值

__HAL_TIM_SetAutoreload             :修改自动重装载值

__HAL_TIM_SetCompare        :修改比较值

示范使用: 打开PWM

打开定时器二的通道二的使能

使得PWM按照上面的预设参数输出PWM

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);

参数对应:定时器2,通道2

修改PWM占空比

__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2, pulseVal); //修改比较值,修改占空比

参数对应:定时器2,通道2,对应通道的比较值(int);

也可以:

htim2.Instance->CCR2 = pulseVal;

使用寄存器直接修改比较值

修改PWM输出频率: 1、通过修改重装值修改PWM输出频率 __HAL_TIM_SetAutoreload(&htim2 , atrVal);

参数对应:定时器2,定时器的自动重装值;

缺点:如果不同步修改通道的比较值,也会对占空比造成干扰

下面的的就没有这个缺点

2、通过修改分频率值修改PWM输出频率 __HAL_TIM_PRESCALER(&htim2, pscVal);

参数对应:定时器2,定时器的预分配值(PSC);



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有