OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4352|回复: 0

linux按键驱动实验例程一处不太严谨的地方

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-8-19
在线时间
4 小时
发表于 2020-1-8 11:05:28 | 显示全部楼层 |阅读模式
  1. static int keyio_init(void)
  2. {
  3.         keydev.nd = of_find_node_by_path("/key");
  4.         if (keydev.nd== NULL) {
  5.                 return -EINVAL;
  6.         }

  7.         keydev.key_gpio = of_get_named_gpio(keydev.nd ,"key-gpio", 0);
  8.         if (keydev.key_gpio < 0) {
  9.                 printk("can't get key0\r\n");
  10.                 return -EINVAL;
  11.         }
  12.         printk("key_gpio=%d\r\n", keydev.key_gpio);
  13.        
  14.         /* 初始化key所使用的IO */
  15.         gpio_request(keydev.key_gpio, "key0");        /* 请求IO */
  16.         gpio_direction_input(keydev.key_gpio);        /* 设置为输入 */
  17.         return 0;
  18. }
复制代码
在keyio_init函数里调用了gpio_request,但是在卸载驱动的时候没有把gpio释放掉。如果加上判断if(gpio_request(keydev.key_gpio, "key0")<0){
printk("error!\r\n");
}
卸载再重新加载驱动,执行app就会报错。
在mykey_exit函数中加上gpio_free(keydev.key_gpio)就能解决问题。


Snipaste_2020-01-08_10-54-14.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 03:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表