STM32F411RE Nucleo笔记-按键控制PWM占空比

分类: MCU |
http://www.stmcu.org/module/forum/thread-599931-1-1.html
首先修改有关PWM方面的代码。
此次用到STM32F411RENucleo开发板,用到Keil
MDK5.12和STM32CubeMx软件。
首先用STM32CubeMx软件配置定时器PWM模式与按键输入IO口。
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100151ndns0z1gi99s1nin.pngNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
图1 PWM配置
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100221h9gofsr5sgszofua.pngNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
图2
按键IO口配置
然后生成Keil工程。
用Keil打开。
PWM初始化代码如下:
查看头文件stm32f4xx_hal_tim.h,可以知道定时器初始化参数的含义如下:
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100350tial5svykm0a0y5a.pngNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
与
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100406unmhnc4ck4rmzkm8.pngNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
从头文件中可以看出,要想简单配置PWM很简单,只要改变PWM周期的值与脉冲值就好。
比如将改变一下两个语句:
htim10.Init.Period =
1000;
sConfigOC.Pulse =
200;
便将PWM配置为周期为1000个定时器周期,高电平持续时间为200个定时器时钟周期,占空比为200/1000=20%。
要想用按键控制PWM占空比,我们只需要修改一下PWM初始化函数,修改如下:
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100519kzy8pzzyj4yebnfo.pngNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
修改此函数之后,前面的函数声明也要改。改为:static
void MX_TIM10_Init(int period,intpulse);
要想PWM工作,需要启动PWM。查看头文件stm32f4xx_hal_tim.h,可以看到如下函数:
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100546ezeje9tdtev0vnwb.pngNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
这是PWM启动与停止的函数。
最后看看按键,只需要把按键配置为上拉模式就好。
在按键初始化中,将
GPIO_InitStruct.Pull=
GPIO_NOPULL;
改为
GPIO_InitStruct.Pull=
GPIO_PULLUP;
接下来便可以写主函数。
编译程序,下载程序,可以看到现象:
http://www.stmcu.org/module/forum/data/attachment/forum/201502/04/100629s5555nybznmdd58h.jpgNucleo笔记-按键控制PWM占空比" TITLE="STM32F411RE Nucleo笔记-按键控制PWM占空比" />
参考代码:
http://www.stmcu.org/module/forum/static/image/filetype/zip.gifNucleo笔记-按键控制PWM占空比" /> PWMChangeTest.zip (4.25 MB,
下载次数: 2387)
后一篇:MODBUS-RTU通讯协议简介