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

公司网站建设工作通知企业名录黄页大全

公司网站建设工作通知,企业名录黄页大全,厦门seo百度快照优化,知名的传媒行业网站开发编写LED灯的驱动#xff0c;使用GPIO子系统#xff0c;里面添加按键的中断处理 1.应用程序发送指令控制发光二极管亮灭 2.按键1按下#xff0c;led1电位反转#xff1b;按键2按下#xff0c;led2电位反转#xff1b;按键3按下#xff0c;led3电位反转 //头文件 #i…编写LED灯的驱动使用GPIO子系统里面添加按键的中断处理 1.应用程序发送指令控制发光二极管亮灭 2.按键1按下led1电位反转按键2按下led2电位反转按键3按下led3电位反转    //头文件 #ifndef __LED_H__ #define __LED_H__//功能码 #define LED_ON _IOW(l,1,int) #define LED_OFF _IOW(l,0,int) #endif//应用程序实现LED的亮灭 #include stdio.h #include string.h #include stdlib.h #include sys/types.h #include sys/stat.h #include sys/ioctl.h #include fcntl.h #include unistd.h #include led.h int main(int argc, const char *argv[]) {int a,b;while(1){int fd_led open(/dev/myled0,O_RDWR); if(fd_led 0){printf(打开设备文件失败\n);exit(-1);}printf(请输入要控制的灯:1 2 3);scanf(%d,b);printf(输入控制命令:0熄灭 1开灯);scanf(%d,a);switch(a){case 1:ioctl(fd_led,LED_ON,b);break;case 0:ioctl(fd_led,LED_OFF,b);break;}close(fd_led);}return 0; }//驱动程序 #include linux/init.h #include linux/module.h #include linux/of.h #include linux/of_gpio.h #include linux/gpio.h #include linux/device.h #include linux/cdev.h #include linux/slab.h #include linux/fs.h #include linux/io.h #includelinux/of_irq.h #includelinux/interrupt.h #include led.h /* leds{led1-gpiosgpioe 10 0;//10表示引脚编号 0表示默认led2-gpiosgpiof 10 0;led3-gpiosgpioe 8 0;};*/ struct device_node *dnode1; struct device_node *dnode2; struct gpio_desc *gpiono1; struct gpio_desc *gpiono2; struct gpio_desc *gpiono3; struct cdev *cdev; int major168; int minor0; struct class *cls; struct device *dev; dev_t devno; int i; unsigned int irqno[3]; //软中断号//中断处理函数 irqreturn_t myirq_handler(int irqno, void *dev_id) {unsigned int id(unsigned int)dev_id;switch(id){case 0:printk(KEY1_INTERRUPT\n);gpiod_set_value(gpiono1,!gpiod_get_value(gpiono1));break;case 1:printk(KEY2_INTERRUPT\n);gpiod_set_value(gpiono2,!gpiod_get_value(gpiono2));break;case 2:printk(KEY3_INTERRUPT\n);gpiod_set_value(gpiono3,!gpiod_get_value(gpiono3));break;}return IRQ_HANDLED; } /*********************封装操作方法***************************/ int mycdev_open(struct inode *inode, struct file *file) {//printk(%s:%s:%d\n, __FILE__, __func__, __LINE__);return 0; }long mycdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {int which;copy_from_user(which,(void *)arg,4);switch(cmd){case LED_ON: // 亮灯switch(which){case 1: gpiod_set_value(gpiono1, 1);break;case 2:gpiod_set_value(gpiono2, 1);break;case 3:gpiod_set_value(gpiono3, 1);break;}break;case LED_OFF:switch(which){case 1:gpiod_set_value(gpiono1, 0);break;case 2:gpiod_set_value(gpiono2, 0);break;case 3:gpiod_set_value(gpiono3, 0);}break;}//printk(%s:%s:%d\n, __FILE__, __func__, __LINE__);return 0; }int mycdev_close(struct inode *inode, struct file *file) {//printk(%s:%s:%d\n, __FILE__, __func__, __LINE__);return 0; } /***********************************************************************///定义一个操作方法结构体变量并初始化 struct file_operations fops {.open mycdev_open,.release mycdev_close,.unlocked_ioctl mycdev_ioctl, }; static int __init mycdev_init(void) {int ret,i;//1.申请对象空间 cdev_alloccdev cdev_alloc();if(cdev NULL){printk(申请对象空间失败\n);ret-EFAULT;goto out1;}printk(申请对象空间成功\n);//2.初始化对象 cdev_initcdev_init(cdev,fops);printk(初始化对象成功\n);//3.申请设备号 register_chrdev_region()或clloc_chrdev_region()if(major ! 0) //静态申请{retregister_chrdev_region(MKDEV(major,minor),3,myled);if(ret){printk(申请静态设备号失败\n);goto out2;}printk(申请静态设备号成功major%d\n,major);}else //动态申请{retalloc_chrdev_region(devno,minor,3,myled);if(ret){printk(申请动态设备号失败\n);goto out2;}majorMAJOR(devno);minorMINOR(devno);printk(申请动态设备号成功major%d\n,major);}//4.注册驱动对象 cdev_add()retcdev_add(cdev,MKDEV(major,minor),3);if(ret){printk(注册驱动对象失败\n);goto out3;}printk(注册驱动对象成功\n);//5.向上提交目录 class_create()clsclass_create(THIS_MODULE,myled);if(IS_ERR(cls)){printk(向上提交目录失败\n);ret -PTR_ERR(cls);goto out4;}printk(向上提交目录成功\n);//6.向上提交设备信息 device_create()for(i0;i3;i){devdevice_create(cls,NULL,MKDEV(major,i),NULL,myled%d,i);if(IS_ERR(dev)){printk(向上提交设备节点失败\n);ret -PTR_ERR(dev);goto out5;}}printk(向上提交设备信息成功\n);// 根据设备树节点的路径解析设备树信息dnode1 of_find_node_by_path(/leds);if (dnode1 NULL){printk(解析设备树节点led失败\n);return -EFAULT;}printk(解析设备树节点led成功\n);// 申请gpio_desc对象并设置输出为低电平gpiono1 gpiod_get_from_of_node(dnode1, led1-gpios, 0, GPIOD_OUT_LOW, NULL);if (IS_ERR(gpiono1)){printk(申请gpio1对象失败\n);return -PTR_ERR(gpiono1);}printk(申请gpio1对象成功\n);gpiono2 gpiod_get_from_of_node(dnode1, led2-gpios, 0, GPIOD_OUT_LOW, NULL);if (IS_ERR(gpiono2)){printk(申请gpio2对象失败\n);return -PTR_ERR(gpiono2);}printk(申请gpio2对象成功\n);gpiono3 gpiod_get_from_of_node(dnode1, led3-gpios, 0, GPIOD_OUT_LOW, NULL);if (IS_ERR(gpiono3)){printk(申请gpio3对象失败\n);return -PTR_ERR(gpiono3);}printk(申请gpio3对象成功\n);// 根据设备树节点的路径解析设备树信息dnode2 of_find_node_by_path(/myirq);if (dnode2 NULL){printk(解析设备树节点myirq失败\n);return -EFAULT;}printk(解析设备树节点myirq成功\n);for(i0;i3;i){//获取软中断号irqno[i]irq_of_parse_and_map(dnode2,i);if(!irqno[i]){printk(软中断号irqno[%d]获取失败\n,i);return -ENXIO;}printk(软中断号获取成功irqno[%d]%d\n,i,irqno[i]);//注册中断retrequest_irq(irqno[i],myirq_handler,IRQF_TRIGGER_FALLING,key,(void *)i);if(ret){printk(注册驱动失败\n);return ret;}printk(key%d中断注册成功\n,i);}return 0; out5:for(--i;i0;i--){//销毁上面提交的设备信息device_destroy(cls,MKDEV(major,i));}class_destroy(cls); out4:cdev_del(cdev); out3:unregister_chrdev_region(MKDEV(major,minor),3); out2:kfree(cdev); out1:return ret; } static void __exit mycdev_exit(void) {// 灭灯gpiod_set_value(gpiono1, 0);gpiod_set_value(gpiono2, 0);gpiod_set_value(gpiono3, 0);// 释放gpio编号gpiod_put(gpiono1);gpiod_put(gpiono2);gpiod_put(gpiono3);//注销中断for(i0;i3;i){free_irq(irqno[i],NULL);} } module_init(mycdev_init); module_exit(mycdev_exit); MODULE_LICENSE(GPL);
http://www.sadfv.cn/news/285092/

相关文章:

  • 商业网站策划书范文wordpress 改成动态
  • 嘉兴有能做网站优化苏州建设项目备案网站
  • 长沙网站优化步骤怎么显示wordpress里元素的源代码
  • 工程门户网站建设上海市网站制作
  • 网站管理系统设置wordpress默认图片居中
  • 潍坊网站建设报价费用wordpress标题背景设置
  • 开发网站五个阶段迅睿cms建站
  • 机械设备企业网站源码山西省建设监理协会网-官方网站
  • 无锡建设机械网站成都网站设计开发公司
  • 如何宣传自己的网站宁夏建设网站
  • 凡客的网站功能cgi做的网站
  • 400电话安装佛山营销网站建设网站广告位价格一般多少
  • 建网站的论坛网站开发和网络设计有什么区别
  • 福州网站关键词推广网站建设规划方案
  • 上哪儿找做网站酒店如何进行网络营销
  • 南昌企业网站设计公司官网站站
  • php 资讯网站简述企业网站的建设流程
  • 企业网站开发模板长春建站平台
  • 南阳市城乡和住房建设局网站德商网站建设
  • 新泰建设局网站下面哪些不是网页制作工具
  • 怎样直接输入网址打开网站建设银行演示网站
  • 网站后台密码海南做网站的技术公司
  • 宽屏营销型网站源码wordpress 数据库说明
  • 长沙核酸检测点宁波网站优化建站公司
  • 企业网站搜索优化网络推广商家推广平台有哪些
  • 黔西做网站网站做优化公司
  • 做家庭影院的有哪些网站网页设计与制作课件张松炎
  • 用手机做网站服务器东莞网络营销推广软件
  • 深圳住房和城乡建设厅网站建筑工程管理局官网
  • 东莞营销型网站设计网页翻译功能