嵌入式STM32学习笔记(3)——pwm波及呼吸灯

写pwm波函数可以调用stm32固件库函数直接生成,也可以通过中断来写pwm波;下面就介绍这两种方法,这里先说一下呼吸灯,其原理就是让LED灯由暗变亮再由亮变暗循环,类似呼吸的效果,亮-暗是一个大周期,而LED灯亮或暗是由其刷新的占空比决定,高电平时间占比长则亮,反之则暗;

stm32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出。关于映射及原理大家可查手册吧,这里不做具体叙述了;个人见解:很多知识用到再仔细研究是节省精力的好办法,工程实验做多了,就会发现有些细微的知识可能一直都不需要了解。

补充一下关于stm32 TIMx的管脚映射,每个定时器的通道都有特定的引脚,其可以通过如下两个函数映射跟换引脚:

但可更换的引脚也是固定的,具体如下表:

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

下面代码包含软件版本pwm波和固件库函数pwm波,具体如下:

1.编译器IAR8,系统win10;

2.板子:STM32F103C8T6核心板,如下:

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

3.下载器:ST-LINK/V2仿真下载器;

4.板子上LED对应的引脚是GPIOC, GPIO_Pin_13;在IAR对应的stm32F103X模板DRIVER目录下添加:led.c,led.h,timer.c,timer.h文件,如下:

嵌入式STM32学习笔记(3)——pwm波及呼吸灯

5.led.c 代码如下:

6.led.h的代码:

7.timer.c代码:

来源:abcvincent

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月16日
下一篇 2019年5月16日

相关推荐