nRF52832-PWM使用
环境介绍
PC环境:Windows
IDE环境:ARM-MDK5
SDK环境:nRF5 SDK v15.1.0
硬件环境:nRF52832开发板(外设配置与官方pca10040开发板一致)
使用官方的pwm_library例程,该位于nRF5_SDK_15.1.0_a8c0c4d\examples\peripheral\pwm_library\pca10040\blank\arm5_no_packs
目录下。
注:pca10040代表nRF52832例程,blank代表基础应用工程,ARM-MDK5选择arm5_no_packs
PWM使用配置
PWM配置步骤如下:
- 使用定时器实例化PWM
- 实现回调函数
- PWM配置,可选择同时配置1个通道或两个通道以及其输出引脚,其他配置可使用独立函数进行配置
- 初始化PWM配置
- 使能PWM
PWM相关参数说明:
- 定时器一共有5个:timer0~4,所以最多实例5个PWM
- 使用SoftDevice时,timer0不能使用
- 每个PWM实例最多可配置2个通道
官方源码分析
官方源码中PWM应用在main.c文件实现,本文根据个人理解作相应的注释,如下:
1 | APP_PWM_INSTANCE(PWM1,1); // 使用定时器1实例化PWM,命名为PWM1 |
官方的例程实现过程以及效果:
- 通过定时器1来实例化PWM1
- 实现PWM1的回调函数
- 在主函数中配置PWM1的同个通道:周期200Hz,使用P17、P18引脚
- 单独配置通道1的输出极性搞(通道0输出极性默认低)
- 初始化和使能PWM1
- 每25ms设置一次通道0、1的占空比(两个通道占空比一样,极性相反)
实现效果:LED1(P17)由亮变暗和LED2(P18)由暗变亮
注:占空比的设置必须在PWM使能后
使用示波器检测P17、P18引脚的效果如下:
资源参考
官方文档:http://infocenter.nordicsemi.com/index.jsp
例程说明位于官方文档目录:Software Development Kit > nRF5 SDK > nRF5 SDK v15.1.0 > Examples > Hardware peripheral examples > PWM Library Example
timer相关API函数说明位于官方目录:Software Development Kit > nRF5 SDK > nRF5 SDK v15.1.0 > API Reference > SDK common libraries > Pulse-width modulation (PWM)
代码烧录
- 擦除FLASH
- 烧写应用程序
具体操作参考:nRF52832-程序下载