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

保健品网站设计wordpress 栏目列表页

保健品网站设计,wordpress 栏目列表页,电子商务网站建设的评估工具,wordpress粘帖图片目录 一、蜂鸣器驱动原理 二、硬件原理分析 三、实验程序编写 1、 修改设备树文件 #xff08;1#xff09;添加pinctrl节点 #xff08;2#xff09;添加BEEP设备节点 #xff08;3#xff09;检查PIN 是否被其他外设使用 2、蜂鸣器驱动程序编写 3、编写测试AP…目录 一、蜂鸣器驱动原理 二、硬件原理分析 三、实验程序编写 1、 修改设备树文件 1添加pinctrl节点 2添加BEEP设备节点 3检查PIN 是否被其他外设使用 2、蜂鸣器驱动程序编写 3、编写测试APP 四、运行测试 一、蜂鸣器驱动原理 蜂鸣器常用于计算机、打印机、报警器、电子玩具等电子产品中常用的蜂鸣器有两种有源蜂鸣器和无源蜂鸣器这里的有“源”不是电源而是震荡源有源蜂鸣器内部带有震荡源所以有源蜂鸣器只要通电就会叫。无源蜂鸣器内部不带震荡源直接用直流电是驱动不起来的需要2K-5K 的方波去驱动。I.MX6U-ALPHA 开发板使用的是有源蜂鸣器因此只要给其供电就会工作I.MX6U-ALPHA 开发板所使用的有源蜂鸣器如下图所示 有源蜂鸣器只要通电就会叫所以我们可以做一个供电电路这个供电电路可以由一个IO来控制其通断一般使用三极管来搭建这个电路。为什么我们不能像控制LED 灯一样直接将GPIO 接到蜂鸣器的负极通过IO 输出高低来控制蜂鸣器的通断。因为蜂鸣器工作的电流比LED 灯要大直接将蜂鸣器接到I.MX6U 的GPIO 上有可能会烧毁IO所以我们需要通过一个三极管来间接的控制蜂鸣器的通断相当于加了一层隔离。 二、硬件原理分析 上图中通过一个PNP 型的三极管8550 来驱动蜂鸣器通过SNVS_TAMPER1 这个IO来控制三极管Q1 的导通当SNVS_TAMPER1 输出低电平的时候Q1 导通相当于蜂鸣器的正极连接到DCDC_3V3蜂鸣器形成一个通路因此蜂鸣器会鸣叫。同理当SNVS_TAMPER1输出高电平的时候Q1 不导通那么蜂鸣器就没有形成一个通路因此蜂鸣器也就不会鸣叫。 三、实验程序编写 1、 修改设备树文件 1添加pinctrl节点 I.MX6U-ALPHA开发板上的BEEP使用了SNVS_TAMPER1 这个PIN打开imx6ull-alientekemmc.dts在iomuxc 节点的imx6ul-evk 子节点下创建一个名为“pinctrl_beep”的子节点节点内容如下所示 pinctrl_beep: beepgrp{fsl,pins MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x10B0;}; 2添加BEEP设备节点 在根节点“/”下创建BEEP 节点节点名为“beep”节点内容如下 beep{#address-cell 1;#size-cell 1;compatible atkalpha-beep;pinctrl-names defaults;pinctrl-0 pinctrl_beep;beep-gpio gpio5 1 GPIO_ACTIVE_HIGH;status okay;}; 3检查PIN 是否被其他外设使用 此先检查PIN 为SNVS_TAMPER1这个PIN 有没有被其他的pinctrl 节点使用如果有使用的话就要屏蔽掉然后再检查GPIO5_IO01 这个GPIO 有没有被其他外设使用如果有的话也要屏蔽掉。 设备树编写完成以后使用“make dtbs”命令重新编译设备树然后使用新编译出来的imx6ull-alientek-emmc.dtb 文件启动Linux 系统。启动成功以后进入“/proc/device-tree”目录中查看“beep”节点是否存在如果存在的话就说明设备树基本修改成功(具体还要驱动验证)结果如下图所示 2、蜂鸣器驱动程序编写 编写beep.c文件 #include linux/types.h #include linux/kernel.h #include linux/delay.h #include linux/ide.h #include linux/init.h #include linux/module.h #include linux/errno.h #include linux/gpio.h #include linux/cdev.h #include linux/device.h #include linux/of.h #include linux/of_address.h #include linux/of_gpio.h #include asm/mach/map.h #include asm/uaccess.h #include asm/io.h#define BEEP_CNT 1 //设备号个数 #define BEEP_NAME beep //名字 #define BEEPOFF 0 //关蜂鸣器 #define BEEPON 1 //开蜂鸣器struct beep_dev {dev_t devid; //设备号struct cdev cdev; //cdevstruct class *class; //类struct device *device; //设备int major; //主设备号int minor; //次设备号struct device_node *nd; //设备节点int beep_gpio; //beep所使用的GPIO编号 };struct beep_dev beep; //beep设备//打开设备 static int beep_open(struct inode *inode, struct file *filp) {filp-private_data beep; //设置私有数据return 0; }//向设备写数据 static ssize_t beep_write(struct file *filp, const char __user *buf,size_t cnt, loff_t *offt) {int retvalue;unsigned char databuf[1];unsigned char beepstat;struct beep_dev *dev filp-private_data;retvalue copy_from_user(databuf, buf, cnt);if(retvalue 0){printk(kernel write failed!\r\n);return -EFAULT;}beepstat databuf[0]; //获取状态值if(beepstat BEEPON){gpio_set_value(dev-beep_gpio, 0); //8550三极管是PNP型高电压截至低电压导通}else if (beepstat BEEPOFF){gpio_set_value(dev-beep_gpio, 1); //关闭蜂鸣器}return 0; }//释放设备 static int beep_release(struct inode *inode, struct file *filp) {return 0; } //设备操作函数 static struct file_operations beep_fops {.owner THIS_MODULE,.open beep_open,.write beep_write,.release beep_release, };//驱动入口函数 static int __init beep_init(void) {int ret 0;//设置BEEP所使用的GPIO//1、获取设备节点beepbeep.nd of_find_node_by_path(/beep);if(beep.nd NULL){printk(beep node not find!\r\n);return -EINVAL;}else{printk(beep node find!\r\n);}//2、获取设备树中的gpio属性得到BEEP所使用的GPIO编号beep.beep_gpio of_get_named_gpio(beep.nd, beep-gpio, 0);if (beep.beep_gpio 0){printk(cant get beep-gpio);return -EINVAL;}printk(led-gpio num %d\r\n, beep.beep_gpio); //3、设置GPIO5_IO01为输出并且输出高点平默认关闭BEEPret gpio_direction_output(beep.beep_gpio, 1);if(ret 0){printk(cant set gpio!\r\n);}//注册字符设备驱动//1、创建设备号if(beep.major)//定义了设备号{beep.devid MKDEV(beep.major, 0);register_chrdev_region(beep.devid,BEEP_CNT,BEEP_NAME);}else//没有定义设备号{alloc_chrdev_region(beep.devid, 0, BEEP_CNT, BEEP_NAME);beep.major MAJOR(beep.devid);//获取分配号的主设备号beep.minor MINOR(beep.devid);//获取分配号的次设备号}printk(beep major %d, minor %d\r\n,beep.major, beep.minor);//2、初始化cdevbeep.cdev.owner THIS_MODULE;cdev_init(beep.cdev, beep_fops);//3、添加一个cdevcdev_add(beep.cdev, beep.devid, BEEP_CNT);//4、创建类beep.class class_create(THIS_MODULE,BEEP_NAME);if (IS_ERR(beep.class)){return PTR_ERR(beep.class);}//5、创建设备beep.device device_create(beep.class, NULL, beep.devid, NULL, BEEP_NAME);if(IS_ERR(beep.device)){return PTR_ERR(beep.device);}return 0; } //驱动出口函数 static void __exit beep_exit(void) {//注销字符设备驱动cdev_del(beep.cdev); //删除cdevunregister_chrdev_region(beep.devid, BEEP_CNT); //删除设备号device_destroy(beep.class, beep.devid);class_destroy(beep.class); }module_init(beep_init); module_exit(beep_exit); MODULE_LICENSE(GPL); MODULE_AUTHOR(ssz); 3、编写测试APP 编写测试文件beepApp.c #include stdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include string.h#define BEEPOFF 0 #define BEEPON 1int main(int argc, char *argv[]) {int fd,retvalue;char *filename;unsigned char databuf[1];if (argc ! 3){printf(Error Usage!\r\n);return -1;}filename argv[1];//打开beep驱动fd open(filename ,O_RDWR);if(fd 0){printf(file %s open failed!\r\n,argv[1]);return -1;}databuf[0] atoi(argv[2]);//向/dev/beep文件写入数据retvalue write(fd, databuf, sizeof(databuf));if(retvalue 0){printf(BEEP Control Failed!\r\n);close(fd);return -1;}retvalue close(fd); //关闭文件if(retvalue 0){printf(file %s close failed!\r\n,argv[1]);return -1;}return 0; } 四、运行测试 同前面章节步骤。
http://www.pierceye.com/news/888141/

相关文章:

  • 网站推广广告 优帮云开发公司资质哪里查
  • 沈阳网站建设思路做海报的话网站
  • 扬州网站建设suteng崇左网页设计
  • 中文网站模板html做网站 最好的开源cms
  • 个人资料展示网站网站建设网络推广外包服务商
  • 外贸网站建设有什么需要注意的吗网站建设职业发展前景
  • 企业网站建设方案效果版权WordPress
  • 做网站知道访客ip汝州文明建设网站
  • 吴江建设局网站打不开了网站备案信息地址
  • 长沙网站建设优化局域网网站架设软件
  • 重庆企业网站建设解决方案seo关键词怎么优化
  • 信誉好的大良网站建设做的好的ppt下载网站有哪些
  • 栖霞网站定制手机网站图片自适应代码
  • 企业网站管理中心网站海外推广
  • 书店商城网站设计万网虚拟主机做网站教程
  • 文化类网站是不是休闲娱乐类网站wordpress插件 ftp
  • 织梦系统网站吉林省建设安全厅官方网站
  • 网站推广网站关键词排名怎么做建站教程wp
  • 用织梦系统做网站产权网站建设需要掌握什么技术
  • 南宁seo平台费用安徽网站关键词优化排名
  • 李贤威 wordpress甘肃搜索引擎网络优化
  • 网站建设的步骤图片过程9377将军
  • 做彩票网站需要什么服务器wordpress slug
  • 个人空间网站建设太原做网页软件
  • 网站建站方式有哪些wordpress星座主题自适应
  • 如何为公司做网站算命 网站开发
  • 那些做软件的网站十大装潢公司上海
  • wordpress 仿站 主题公路建设网站
  • 接网站 建设网站建设业务员招聘
  • 江西工程建设信息网站服装公司网站建设