STM32L475使用PWM输出波形

发布时间:2023-08-16  

本文描述了如何在搭载了 RT-Thread 操作系统的平台上使用 PWM 输出波形,包括 PWM 的应用、配置和驱动的添加等。并给出了在正点原子 STM32L475 pandora 开发板上验证的代码示例。


硬件平台简介

本文基于正点原子 STM32L475 pandora 开发板,给出了 PWM 的具体应用示例代码,由于 RT-Thread 上层应用 API 的通用性,因此这些代码不局限于具体的硬件平台,用户可以轻松将它移植到其它平台上。 STM32L475 pandora 是正点原子推出的一款基于 ARM Cortex-M4 内核的开发板,最高主频为 80Mhz,该开发板具有丰富的板载资源,可以充分发挥 STM32L475 的芯片性能。


使用 PWM

在 menuconfig 中打开 PWM 通道

打开 Env 工具,使用 menuconfig 工具配置工程,在 Env 命令行中输入 menuconfig 进入配置界面。在 menuconfig 配置界面依次选择 Hardware Driver Config ---> On-chip Peripheral Drivers ---> Enable pwm ---> Enable timer2 output pwm 如下图所示:

选中需要使用的 PWM 通道后保存退出,使用 scons --target=mdk5 生成 mdk5 工程,打开工程进行编译并下载程序,在终端输入 list_device 命令可以看到 PWM2 设备已经成功添加了,如下图所示:

使用 PWM 输出波形

应用程序可以通过 RT-Thread 提供的设备管理接口来访问 PWM 设备硬件,相关接口如下所示:

接口参数的具体描述请参考官网PWM 设备

链接:

https://www.rt-thread.org/document/site/programming-manual/device/pwm/pwm/

(以上链接请复制至外部浏览器打开)

PWM 设备使用步骤

PWM 设备的具体使用方式可以参考如下步骤:

初始化 PWM 设备。 使用 rt_device_find 查找指定的 PWM 设备。 使用 rt_pwm_set 设置通道的默认 PWM 周期和脉冲宽度。 使用 rt_pwm_enable 使能需要输出波形的 PWM 通道。

使用 PWM 设备输出波形。 使用 rt_pwm_set 输出特定的波形。

关闭 PWM 输出通道。 当不再需要使用 PWM 通道输出波形时,可以调用 rt_pwm_disable 关闭对应的输出通道。

代码如下所示:向滑动查看全部

1#definePWM_DEV_NAME"pwm2"/*PWM设备名称*/ 2#definePWM_DEV_CHANNEL3/*PWM通道*/ 3#defineTHREAD_PRIORITY25/*线程优先级*/ 4#defineTHREAD_STACK_SIZE512/*线程栈大小*/ 5#defineTHREAD_TIMESLICE5/*线程时间片大小*/ 6 7staticrt_thread_ttid1=RT_NULL;/*线程句柄*/ 8structrt_device_pwm*pwm_dev;/*PWM设备句柄*/ 9staticrt_uint32_tperiod=500000;/*周期为0.5ms,单位为纳秒ns*/ 10staticrt_uint32_tpulse=0;/*PWM脉冲宽度值的增减方向*/ 11 12/*线程pwm_entry的入口函数*/ 13staticvoidpwm_entry(void*parameter) 14{ 15rt_uint32_tcount=0; 16 17while(count++

运行 PWM 测试程序

要运行 PWM 测试程序,需要在终端输入 pwm_test 由于此 BSP 的 PWM2 通道 3 的输出并没有连接到外设上,无法直观的看到现象,所以这里使用逻辑分析仪来抓取 PWM 输出的波形,波形输出如下图所示:

从逻辑分析仪抓取的波形可以看到,PWM 波形已经成功输出。

添加 PWM 驱动

如果使用的 BSP 在 menuconfig 中没有给出 PWM 通道的配置项,那么就需要自己添加 PWM 的驱动,下面就如何自己添加 PWM 驱动展开讲解。

检查驱动文件是否支持 PWM

进入 rt-threadspstm32librariesHAL_Drivers 目录检查 drv_pwm.c 文件是否支持相应的 PWM 外设输出。检查驱动文件是否支持相应的 PWM 外设(PWM1、2、n)

检查驱动文件是否支持相应的 PWM 输出通道(1、2、3、4)

初始化 PWM 通道引脚

进入 rt-threadspstm32l475-atk-pandoraoardCubeMX_Config 目录,双击打开 STM32L475VE.ioc 文件初始化 PWM 通道对应的引脚,这里以 PWM2 通道 3 为例,如下图所示:

点击 GENERATE CODE 按钮生成代码,虽然 STM32CubeMX 生成了多个文件用来初始化外设,但 RT-Thread 只使用了 STM32CubeMX 生成的 stm32fxx_hal_msp.c 文件和 stm32fxx_hal_conf.h 文件,生成的 PWM 代码如下所示:

配置 Kconfig 文件

进入 rt-threadspstm32l475-atk-pandoraoard 目录,添加 Kconfig 选项,如下图所示:

使用 scons --target=mdk5 命令生成 mdk5 工程,打开工程并编译,如果工程提示 PWMn_CONFIG 未定义。 可以在stm32/libraries/HAL_Drivers/config/f4/pwm_config.h 中进行定义,如下图所示:

完成以上步骤就可以在 menuconfig 菜单中添加支持的 PWM 输出通道,至于如何使用 PWM 通道输出波形请参考上一章节。 到这一步为止,如何在搭载了 RT-Thread 操作系统的平台上如何使用 PWM 的介绍就结束了。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>