查看“扩展板LED灯驱动移植”的源代码
←
扩展板LED灯驱动移植
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==实验原理== 打开扩展板原理图对照扩展板可以看到扩展板有四个LED灯,其中LED4为底板电压指示灯,LD1、LD2、LD3为可控LED,原理如下: <center>[[Image:58-1-1.png]]</center><br> 有图可知,当LED1为高电平是三极管Q3导通,这时发光二极管LD1会被点亮,同理当LED2和LED3为高电平时LD2、LD3会被点亮。 查看原理图可知LED1、LED2、LED3分别对应STM32MP157芯片的PE10、PF10、PE8如下图: <center>[[Image:58-1-2.png]]</center><br> <center>扩展板与底板接口对照图</center> 根据网络编号可最终追至CPU对应管脚,由于上图已经可以明确LED灯对应管脚。 {| align=center border=2 |- ! 原理图网络编号 !! 对应管脚 !! 管脚功能 !! 管脚功能码 |- | LED1 | PE10 | GPIO | ANALOG |- | LED2 | PF10 | GPIO | ANALOG |- | LED3 | PE8 | GPIO | ANALOG |} ==实验目的== 了解LED工作原理,掌握使用内核LED灯驱动控制LED灯的方法。 ==实验平台== 华清远见开发环境,FS-MP1A平台 ==实验步骤== <ol> <li>导入交叉编译工具链</li> linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi <li>内核配置</li> 内核中对于gpio驱动LED提供了标准的驱动,只要在内核中配置对应选项即可,驱动路径为: drivers/leds/leds-gpio.c 由于内核中已经配置GPIO LED驱动,这里列出配置选项供参考。 <pre> linux@ubuntu:$ make menuconfig Device Drivers ---> [*] LED Support ---> <*> LED Class Support <*> LED Support for GPIO connected LEDs </pre> <li>修改设备树</li> 参考linux内核文档: Documentation/devicetree/bindings/leds/leds-gpio.txt 修改设备树文件: arch/arm/boot/dts/stm32mp157a-fsmp1a-extended.dts 在根节点下添加led相关内容,红色字体部分为添加内容:<br> <div style="background-color:#F8F8F8;border:1px solid #E5E5E5;font-family: monospace,Courier;"> /{<br> model = "HQYJ STM32MP157 FSMP1A EXTENDED Discovery Board";<br> compatible = "st,stm32mp157", "st,stm32mp157a-fsmp1a-extended";<br> <font color="#F00"> led { : compatible = "gpio-leds"; : led1 { :: label = "led1"; :: gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>; :: default-state = "off"; : }; : led2 { :: label = "led2"; :: gpios = <&gpiof 10 GPIO_ACTIVE_HIGH>; :: default-state = "off"; : }; : led3 { :: label = "led3"; :: gpios = <&gpioe 8 GPIO_ACTIVE_HIGH>; :: default-state = "off"; : }; }; </font><br> }; </div> <li>重新编译内核和设备树文件</li> make -j4 uImage dtbs LOADADDR=0xC2000040 <li>更新系统内核和设备树</li> <li>测试</li> 系统启动后可以查看目录/sys/class/leds <pre> root@fsmp1a:# ls /sys/class/leds/ led1 led2 led3 </pre> led1、led2和led3三个目录分别和设备树种三个节点的名称一致,在这几个目录下内容如下 <pre> root@fsmp1a:~# ls /sys/class/leds/led1/ brightness device max_brightness power subsystem trigger uevent </pre> 其中向brightness文件写入1或0即可实现LED灯的控制 <pre> root@fsmp1a:~# echo 0 > /sys/class/leds/led1/brightness root@fsmp1a:~# echo 0 > /sys/class/leds/led2/brightness root@fsmp1a:~# echo 0 > /sys/class/leds/led3/brightness root@fsmp1a:~# echo 1 > /sys/class/leds/led3/brightness root@fsmp1a:~# echo 1 > /sys/class/leds/led2/brightness root@fsmp1a:~# echo 1 > /sys/class/leds/led1/brightness </pre> 观察LED灯状态变化 </ol>
返回至
扩展板LED灯驱动移植
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
关于我们
联系我们
资料下载
STM32F103开发板
STM32U575开发板
STM32MP157开发板
Hi3861鸿蒙开发板
HaaS EDU开发板
ESP32开发板
i.MX8M Plus开发板
图书下载
嵌入式系列图书
物联网系列图书
Android系列图书
高校教仪
嵌入式实验室产品
物联网实验室产品
人工智能实验室产品
虚拟仿真实验室产品
行业应用实训室产品
虚拟仿真
嵌入式虚拟仿真平台
物联网虚拟仿真平台
人工智能虚拟仿真
友情链接
华清远见研发中心
元宇宙实验中心
华清远见硬件商城
工具
链入页面
相关更改
特殊页面
页面信息