完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
LED驱动的方式有多种,可以自定义驱动,然后通过/dev/myled 设备文件,来控制led。
也可以通过内核 led驱动架构来控制,通过/sys/leds/myled/ 里面的各种文件来控制。内核还提供了一个非常方便的方法,就是用过leds_gpio驱动来控制LED. 我们只需要配置相关引脚就新了。 步骤如下: 1.添加配置引脚 修改 dev.c 文件 在内核目录/arch/arm/mach-nuc970/ 中。 添加头文件 #include // add by simon for leds_gpio driver 添加引脚配置 #if defined(CONFIG_LEDS_GPIO) //================leds_gpio add by simon ============= static struct gpio_led gpio_leds[] = { { .name = "red", .gpio = NUC970_PH12, .default_state = LEDS_GPIO_DEFSTATE_ON, // 默认LED亮 .active_low = 0, // 低电平亮 .default_trigger = "timer", // 触发器 }, }; static struct gpio_led_platform_data gpio_led_info = { .leds = gpio_leds, .num_leds = ARRAY_SIZE(gpio_leds), }; static struct platform_device leds_gpio = { .name = "leds-gpio", .id = -1, .dev = { .platform_data = &gpio_led_info, //.release = platformdev_release, }, }; //===================================================== #endif 2.添加设备文件 把 leds_gpio 设备添加到 static struct platform_device *nuc970_public_dev[] __initdata 这个设备数组中。 系统启动时会自动加载设备。 static struct platform_device *nuc970_public_dev[] __initdata = { ... #if defined(CONFIG_LEDS_GPIO) &leds_gpio, #endif ... }; |
|
相关推荐
1个回答
|
|
2.在平台设备中添加leds_gpio设备节点 设备节点定义需要在平台设备中进行添加,后面还需要在设备树中进行配置。在内核目录/arch/arm/mach-nuc970/board-nuc970.c文件中添加: static struct resource leds_gpio_resource[] = {{IORESOURCE_MEM, 0xE7500400, 0x0010},}; static struct platform_device leds_gpio_device = {t.name t= "leds-gpio",t.id t= -1,t.resource t= leds_gpio_resource,t.num_resources = ARRAY_SIZE(leds_gpio_resource),t}; int __init nuc970_init(void) { .... platform_device_register( leds_gpio_device); }3.在设备树中添加leds_gpio节点接下来需要在设备树中进行相应的配置,具体如下:leds_gpio:leds-gpio { tcompatible t= "gpio-leds"; tleds t= { ttcompatible t= "gpio-led"; ttlabel t= "nuc972-led"; ttgpios t t= < pnm_gpio 12 4>; t};};其中,pnm_gpio 12 4 对应的是Nuc972芯片的GPIOC12号引脚。4.编译内核并烧写至Nuc970开发板 参照NUC970开发板上的官方文档进行烧写即可。 5.测试通过/sys/class/leds/myled/可以进行led的操作了。
|
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9002 浏览 16 评论
4051 浏览 18 评论
1113浏览 3评论
573浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
571浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2303浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 07:58 , Processed in 1.355006 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号