当前位置: 首页 > news >正文

Zephyr学习之PWM方式驱动LED灯记录

前言

  1. 继Zephyr学习之点亮LED文章。
  2. 本次使用的示例工程blinky_pwm
  3. 驱动的引脚为PF9

工程复制并打开项目

参考提供的设备树文件的PWM节点编写规则



找到我们这边使用的pf9对应的引脚定义

编写设备树覆盖配置文件

/{// 选择系统控制台和 shell UART 设备chosen{// 指定系统控制台使用 usart1zephyr,console=&usart1;// 指定 shell UART 使用 usart1zephyr,shell-uart=&usart1;};// GPIO LED 配置节点leds{// 兼容性字符串,表示使用 GPIO LED 驱动compatible="gpio-leds";// 第一个 LED 配置led0:led0{// 配置 GPIO 引脚为 PF9(GPIOF 端口第 9 号引脚),高电平有效gpios=<&gpiof9GPIO_ACTIVE_HIGH>;// PF9// 设置 LED 的标签名称label="User LED0";};// 第二个 LED 配置led1:led1{// 配置 GPIO 引脚为 PF10(GPIOF 端口第 10 号引脚),高电平有效gpios=<&gpiof10GPIO_ACTIVE_HIGH>;// PF10// 设置 LED 的标签名称label="User LED1";};};// PWM LED 配置节点pwmleds{// 启用 PWM LED 设备status="okay";// 兼容性字符串,表示使用 PWM LED 驱动compatible="pwm-leds";// PWM 控制的 LED 配置pwm_led0:pwm_led0{// 配置 PWM 属性:引用 PWM 设备、通道号、周期、极性// &pwm14: 引用 PWM 设备// 1: 使用通道 1// PWM_MSEC(100): 设置周期为 100 毫秒// PWM_POLARITY_INVERTED: 设置为反向极性pwms=<&pwm141PWM_MSEC(100)PWM_POLARITY_INVERTED>;// 设置 PWM LED 的标签名称label="PWM LED0";};};// 别名定义,简化设备引用aliases{// 将 uart0 映射到 usart1uart0=&usart1;// 将 led0 映射到 led0led0=&led0;// 将 led1 映射到 led1led1=&led1;// 将 pwmled0 映射到 pwm_led0pwmled0=&pwm_led0;};};&pinctrl{tim14_ch1_pf9:tim14_ch1_pf9{pinmux=<STM32_PINMUX('F',9,AF9)>;};};// 串口1&usart1{pinctrl-0=<&usart1_tx_pa9&usart1_rx_pa10>;pinctrl-names="default";current-speed=<115200>;status="okay";};// 定时器&timers14{status="okay";pwm14:pwm{status="okay";pinctrl-0=<&tim14_ch1_pf9>;pinctrl-names="default";};};

注意

编写测试函数

/* * Copyright (c) 2016 Intel Corporation * Copyright (c) 2020 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 *//** * @file Sample app to demonstrate PWM. */#include<zephyr/kernel.h>#include<zephyr/sys/printk.h>#include<zephyr/device.h>#include<zephyr/drivers/pwm.h>#include<zephyr/drivers/gpio.h>#include"autoconf.h"staticconststructpwm_dt_specpwm_led0=PWM_DT_SPEC_GET(DT_ALIAS(pwmled0));intmain(void){uint32_tmax_period=0;uint32_tperiod;uint8_tdir=0U;intret;if(!pwm_is_ready_dt(&pwm_led0)){printk("Error: PWM device %s is not ready\n",pwm_led0.dev->name);return0;}uint32_tpulse_width=0;max_period=1000;pwm_set_dt(&pwm_led0,max_period,pulse_width);while(1){ret=pwm_set_dt(&pwm_led0,max_period,pulse_width);if(ret){printk("Error %d: failed to set pulse width\n",ret);}printk("Using pulse_width %d\n",pulse_width);if(dir==0){if(pulse_width<max_period){pulse_width++;}else{dir=1;}}else{if(pulse_width>0){pulse_width--;}else{dir=0;}}k_sleep(K_MSEC(5U));}return0;}

测试结果

http://www.jsqmd.com/news/279802/

相关文章:

  • 2026陕西建筑加固厂家排名:3家头部企业实测,适配不同场景需求
  • 2026陕西建筑加固厂家质量评测榜:3大头部企业权威打分实测对比
  • 国产高端PCB设计软件推荐,国产高端PCB设计软件哪个好?
  • 构建ranger-usersync报错KeyError: ranger.usersync.ldap.ldapbindpassword
  • 2026年除蟑螂服务推荐榜:成都仁民有害生物防治服务有限公司,高效上门灭蟑螂专业之选
  • 2026年清废机设备推荐榜:深圳市豪瑞斯精密五金机械有限公司,全系清废解决方案供应商
  • 好用的问卷调查网站评测:一键Word转问卷(技术革新)
  • 2026年热保护器厂家实力推荐榜:扬州宝珠电器有限公司,全系热保护器产品供应多领域
  • 解决【Error 1935.安装程序集“Microsoft.VC8O. ATL,type=“win32“,version=“8.0.50727.6195“,publicKeyToken=“1fe8b】
  • 面试常见问题之剖析哈希表
  • Linux02-Linux是什么怎么学
  • 果博东方「百科」l66873-99996电微开户区块链的应用案例?
  • 2026 年化妆品空运公司推荐:专业高效的美妆物流解决方案指南
  • RWA:2025年最危险的金融实验,还是下一个万亿风口?
  • 码农常见问题之如何证明自己写的算法是对的
  • 耐力板行业领军者:29年经验+行业标准参编(2025推荐)
  • Java+AI 核心指南:大模型丝滑接入与多模型统一范式
  • Pscad仿真模型-电力仿真程序, VMD与TEO结合的行波测距双端电源以及T接线路
  • 上万点数据如何稳定采集?基于 BL118 Node-RED 的工业边缘汇聚方案
  • 从中心化到混合架构:数字资产交易所的技术革命与生态重构
  • 靠谱的小程序开发制作公司:2026年选型指南
  • 深圳 APP / 微信小程序开发前十机构怎么选?昊客网络用技术与案例说话!
  • CodeSense5.1重磅发布|精准、合规、智能三重进化,驱动国产静态分析新高度
  • 2026年不锈钢复合管栏杆厂家推荐榜:聊城市聚晟新材料科技有限公司,道路栏杆/人行道栏杆/防撞栏杆/桥梁栏杆/铝合金栏杆厂家精选
  • 链条直销2026风向标:哪些品牌走在行业前端?不锈钢链条/链条/工业链条/非标链条,链条企业口碑推荐榜
  • 全网最全9个AI论文网站,MBA学生轻松搞定毕业论文!
  • 2026最新生腌三文鱼推荐!上海/延吉韩式生腌权威榜单发布,品质与风味兼具的生腌美食精选
  • DApp 2.0时代:当AI、隐私计算与模块化链重塑互联网未来
  • 2026最新生腌蟹品牌推荐!国内优质韩式生腌蟹权威榜单发布,匠心品质与地道风味双优助力味蕾盛宴,上海生腌蟹/延吉生腌蟹服务品牌推荐
  • 吃透联想服务器管理!本地 / SSH / 带外(BMC/IMM)三种方式实战指南