1、LED灯操作
用户空间执行open时,led1亮;执行close时,led1灭。
电路原理图:
led1 —> GPIOC12
如何控制:
cpu datasheet 特殊功能寄存器
在linux下操作GPIO管脚有两种方式:
1)像裸板开发一样通过’指针 + 位操作‘来完成特殊功能寄存器的设置。
问题在于:/* 要将特殊功能寄存器的物理地址转换成虚拟地址。*/
2)通过GPIO库函数的方式
在内核中提供了操作GPIO管脚的库函数,其使用有固定的套路:
a)申请管脚;
intgpio_request(unsigned gpio, const char *label);
功能:向内核申请GPIO资源
gpio:GPIO软件编号
name:标识
b)使用管脚;
intgpio_direction_output(int gpio, int value);
功能:设置GPIO为输出口,并且输出value值
gpio:GPIO软件编号
value:管脚状态,1和0代表高低电平
intgpio_direction_inputput(int gpio);
功能:设置GPIO为输入口
gpio:GPIO软件编号
voidgpio_set_value(int gpio, int value);
功能:设置GPIO的状态为value
gpio:GPIO软件编号
value:管脚状态
intgpio_get_value(int gpio);
功能:获取GPIO的状态,返回值为状态信息
gpio:GPIO软件编号
返回值:非0 – 高电平;0 – 低电平
c)释放管脚;
voidgpio_free(unsigned gpio);
功能:释放GPIO资源
gpio:GPIO软件编号
<GPIO软件编号>
验证:
把内核自带的led驱动去掉,重新烧写内核到开发板,再验证新的led驱动。
$:’ make menuconfig
Device Drivers —>
Character devices —>
< > My led driver // 没有就不用管
-*- LED Support —>
< > LED Support for GPIO connected LEDs
< > PWM driven LED Support
[ ] LED Trigger support 来源:不才Jerry
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!