fl2440蜂鸣器测试程序和strcmp()及struct input_event 还有perror()浅析

基于S3C2440的Linux-3.6.6移植——PWM蜂鸣器驱动 Linux带有基于PWM蜂鸣器的通用驱动程序——Pwm-beeper.c(位于drivers/input/misc目录下),它是属于输入子系统的。因此要移植该驱动,只需要在自己的开发板程序文件中添加PWM蜂鸣器的平台设备及相关属性即可。   在arch/arm/mach-s3c24xx目录下的mach-zhaocj2440.c文件中的适当位置添加如下内容: /* beeper */ sta 阅读详情


前面移植了内核自带的蜂鸣器驱动,现在有时间写一个最简单的测试程序,功能是打开蜂鸣器,或者关闭蜂鸣器。


  1 /*********************************************************************************
  2  *      Copyright:  (C) 2017 fanmaolin<fanmaolinn@gmail.com>
  3  *                  All rights reserved.
  4  *
  5  *       Filename:  test.c
  6  *    Description:  This file 
  7  *                 
  8  *        Version:  1.0.0(04/23/2017)
  9  *         Author:  fanmaolin <fanmaolinn@gmail.com>
 10  *      ChangeLog:  1, Release initial version on "04/23/2017 09:36:39 AM"
 11  *                 
 12  ********************************************************************************/
 13 
 14 #include<stdint.h>
 15 #include<string.h>
 16 #include<fcntl.h>
 17 #include<unistd.h>
 18 #include<stdio.h>
 19 #include<linux/input.h>
 20 #include<unistd.h>
 21 
 22 
 23 int main(int argc, char *argv[])
 24 {
 25     int fd;
 26     
 27     struct input_event event;
 28 
 29 
 30 
 31 if ((fd = open("/dev/event1", O_RDWR)) < 0) {			//打开dev/event1,设置为读写模式
 32 
 33     perror("beep test");						//如果文件打开失败,打印出错信息
 34 
 + testpwm.c                                                                                                                        
 35     return 1;
 36 
 37 }
 38 
 39 
 40 
 41     event.type = EV_SND;			//事件类型设置为支持声音
 42     event.code = SND_TONE;			//设置事件代码为SND_TONE
 43 
 44     if(!strcmp (argv[1],"1"))		//strcmp()函数用来比较两个字符串
 45     {
 46         {
 47             event.value = 2000;   //打开蜂鸣器  
 48             write(fd, &event, sizeof(struct input_event));
 49         }
 50     }
 51 
 52     else if(!strcmp (argv[1],"0"))
 53     {
 54 
 55             event.value = 0;//关闭蜂鸣器
 56             write(fd, &event, sizeof(struct input_event));
 57     }
 58 
 59    close(fd);		//释放占用资源
 60 
 61        return 0;
 62 
 63 }


[fanmaolin@centos6 ~]$ /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc test.c

把生成的a.out文件传到开发板上进行测试




OK


下面展开分析函数和程序

我的蜂鸣器测试程序使用了struct input_even结构体,在写按键驱动时也用到了这个,这里展开仔细讲一下

[fanmaolin@Centeros linux-3.0]$ vim include/linux/input.h    

linux/input.h中有定义,这个文件还定义了标准按键的编码等

struct input_event {

struct timeval time; //按键时间

__u16 type; //类型,在下面有定义

__u16 code; //要模拟成什么按键

__s32 value;//是按下还是释放

};


事件类型中可以看到支持声音

/*

* Event types

*/

#define EV_SYN 0x00

#define EV_KEY 0x01 //按键

#define EV_REL 0x02 //相对坐标(轨迹球)

#define EV_ABS 0x03 //绝对坐标

#define EV_MSC 0x04 //其他

#define EV_SW 0x05

#define EV_LED 0x11 //LED

#define EV_SND 0x12//声音

#define EV_REP 0x14//repeat

#define EV_FF 0x15 

#define EV_PWR 0x16

#define EV_FF_STATUS 0x17

#define EV_MAX 0x1f

#define EV_CNT (EV_MAX+1)



在头文件中追踪SND后发现event.code可以为两种模式

SND_BELL或SND_TONE



如果为SND_BELL,不管input_event.value为多少,最终的value只能为1000或0,即不能改变蜂鸣器的频率。1000表示蜂鸣器打开,0表示蜂鸣器关闭。
如果为SND_TONE,则可以通过改变input_event.value的值来调整蜂鸣器的频率,从而发出各种不同的音调。

至于为什么要使用struct input_even结构体有些时候我们要模拟按键来达到控制设备的目的,具体 方法就是操作/dev/input/eventx文件,向它写入个input_event结构体就可以模拟按键的输入了,查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices,比如我的测试程序中event.value=2000时蜂鸣器响,等于0时蜂鸣器关闭,就是相当于按键的event.value=1时按键按下,等于0时按键抬起,这就是一个模拟按键的典型例子,不同的是type,code,value不同。

http://blog.youkuaiyun.com/bingqingsuimeng/article/details/8178122(struct input_even结构体参考)


strcmp()函数

int strcmp(const char *s1, const char *s2);

比较两个字符串

设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
44     if(!strcmp (argv[1],"1"))	
 52     else if(!strcmp (argv[1],"0"))
我们在这里,利用int main(int argc, char *argv[])

argc是命令行总的参数个数 , argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,char   *argv[]是一个字符数组,其大小是int   argc,主要用于命令行参数   argv[]   参数,数组里每个元素代表一个参数;   

 比如我们在执行这个程序时输入./a.out会导致段错误,因为没有给argv数组赋值,正确的是./a.out x ,这里的"x"会和“1”、“0”做比较,从而判断是否打开蜂鸣器。



perror()函数

  perror("beep test");	

#include <stdio.h>
void perror(const char *s);
perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) 。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。


问题总结:

一、

./a.out: line 1: syntax error: unexpected "("

要交叉编译 /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc test1.c
生成的a.out才能在开发板上执行,这也是交叉编译器的作用。

二、
>: ./a.out
Segmentation fault

段错误,我没有给arg[]赋值,使他变成了野指针。在执行时应该./a.out 1 打开  或者 ./a.out 0 关闭,给它赋值“1”或“0”。上面也有分析。
详细解释:http://blog.chinaunix.net/uid-23069658-id-3959636.html

三、
我执行了./a.out 1 但是蜂鸣器并没有响,加了printf后,发现文件已经打开,但为什么蜂鸣器不能正常工作。

我们在启动开发板进入内核时,会有哔的一声,说明蜂鸣器驱动没有问题,后来发现是我们的测试程序打开错误的文件,之前看是event0但是后来移植了按键驱动后按键驱动变成了event0,蜂鸣器变为event1,所以应该open(event1...),用cat proc/bus/input/devices查看
这是之前的:

移植按键驱动后:


蜂鸣器的测试程序是模拟按键的,所以这里有kbd event1,但是我们要知道蜂鸣器是event1就可以了,所以应该是open("/dev/event1",O_RDWR),以后要特别注意这个问题。

参考:

strcmp():http://baike.baidu.com/link?url=1PJKyqgobTbIYt8fbVku1Loxdz4GEyqYjGAyAMpzNTJ61xT6Rvi_6DvGRVlD53tjnMfyZjvKFN-a9t3uHBT61_

perror():http://blog.youkuaiyun.com/ypist/article/details/7886209

struct input event :http://blog.sina.com.cn/s/blog_602f87700101dno6.html

     http://blog.youkuaiyun.com/bingqingsuimeng/article/details/8178122

蜂鸣器标准测试demo 此demo是标准的linux pwm-beep引用app,调用的是驱动pwm-beep驱动提供的标准输入设备接口 立即下载

相关推荐

蜂鸣器的测试程序下载

蜂鸣器的测试程序,应该还算不错吧,rar 文件直接解压就可以了

【TINY4412】LINUX移植笔记:(18)设备树BEEP驱动

【TINY4412】LINUX移植笔记:(18)设备树 BEEP驱动 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 LINUX内核: 4.12.0 交叉编译器: arm-none-linux-

大水猫 1482

CSR-DCF视频目标跟踪源码运行笔记

论文基本信息 论文标题:Discriminative Correlation Filter with Channel and Spatial Reliability 论文作者:Alan Lukezic等 论文出处:CVPR 2017 文章链接:https://arxiv.org/abs/1611.08461 补充材料:https://www.semanticscholar.org/paper/D...

越野者的博客 3400

linux蜂鸣器驱动指令,Linux 设备驱动简析—PC蜂鸣器驱动

/**By Neil Chiao ()*欢迎到“新星湾()”指导*/在X86平台的主板上一般都有一个蜂鸣器,有人可能认为这么简单的东西,根本不需要驱动吧?但是其实Linux内核中专门有一个这样的驱动pcspkr.c。(注意:本文分析的代码来自linux-2.6.28)1、从用户空间代码开始先看下面这个小程序,此程序的作用是让PC蜂鸣器叫,它open了/dev/tty10这个设备,难道PC蜂鸣器设备...

weixin_42125770的博客 891

基于Transformer的CFD代理模型:AeroTransformer原理、实现与优化

计算流体动力学(CFD)仿真是航空航天、汽车工程等领域的关键技术,但其高计算成本限制了设计优化效率。代理模型通过机器学习方法学习输入参数与流场输出间的映射关系,能实现秒级预测,大幅加速仿真流程。Transformer架构凭借其全局注意力机制,能有效建模流场中的长程物理关联,克服了传统卷积神经网络在捕捉全局依赖上的局限。通过预训练与微调策略,模型能先在大规模多样化数据集上学习通用流体规律,再针对特定任务快速适配,显著提升了小样本下的泛化能力与工程实用价值。AeroTransformer项目正是这一技术路线的典

weixin_33509203的博客 359

三轴加速度传感器计步算法优化:动态阈值与滤波技术的实践应用

本文深入探讨了三轴加速度传感器计步算法的优化实践,重点分析了动态阈值调整与高效滤波技术如何协同提升计步精度与鲁棒性。通过对比均值滤波的局限,引入向量模长计算、多级自适应阈值以及状态机判决逻辑,并结合代码示例,为嵌入式及移动应用开发者提供了应对复杂运动场景的实用解决方案。

cherry的博客 501

Linux 通过uinput机制实现蜂鸣器驱动

通过uinput机制模拟了input设备,实现了蜂鸣器的控制。 系统内核:2.6.21 发布版本fedora7 1. 主要流程如下: 2. 详细代码如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include &l...

MJZ0508 682

2025.06.17【WGS】|多样品VCF文件中每个样品SNP数统计方法详解(含代码与注释)

摘要:本文介绍了一种从合并后的VCF文件中统计每个样品SNP数目的方法。通过解析VCF文件中的GT字段,排除纯合参考(0/0)和缺失(./.)的基因型,准确计算各样本的SNP位点数。文中提供了完整的Python脚本,利用bcftools工具高效处理大规模VCF文件,并支持输出SNP统计结果。该方法适用于群体遗传学和RAD-seq等高通量测序数据分析的质控环节,还可扩展为统计杂合/纯合SNP等进阶需求。脚本使用简单,只需输入VCF文件即可生成样本-SNP数目的统计报表。

1700

linux c蜂鸣器驱动程序,Linux 设备驱动简析—PC蜂鸣器驱动

/**By Neil Chiao ()*欢迎到“新星湾()”指导*/在X86平台的主板上一般都有一个蜂鸣器,有人可能认为这么简单的东西,根本不需要驱动吧?但是其实Linux内核中专门有一个这样的驱动pcspkr.c。(注意:本文分析的代码来自linux-2.6.28)1、从用户空间代码开始先看下面这个小程序,此程序的作用是让PC蜂鸣器叫,它open了/dev/tty10这个设备,难道PC蜂鸣器设备...

weixin_39593469的博客 295

将3DMax编辑的动画,导入给已经绑定蒙皮好的模型给Unity使用

现在程序猿想做独立游戏,即容易,也难。 说容易,引擎越来越傻瓜化。 说难,到哪去找靠谱的美术? 好在伟大的AssetStore(还有淘宝上)有大批不赖的资源可以用。 现成的模型,是好,但是,没有配套的动作,却是一件让人头疼的事情,即使用IK动画,也不能完美的弥补这一缺陷。 虽然Unity具备 retargeting 功能,但是,也不是万能的,很多情况下,非标准的骨骼会导致

正经的时候都在打游戏 1万+

【数据集8】全球人口数据WorldPop详解

全球人口数据WorldPop详解

WW、forever的博客 7882

input_event结构体详解

关键结构体input_event信息: struct input_event { struct timeval time; __u16 type; __u16 code; __s32 value; }; type: 设备类型。可以设置为: #define EV_SYN          0x00    表示设备支持所有的事件 #define EV_KEY         

liwei405499的专栏 1万+

28.Anaconda安装jupyter notebook、jupyterlab及体验

手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。说明:Anaconda没有加入环境变量,Anaconda官方建议不要将Anaconda加入环境变量,这就意味着他和python是可以共存的。

迷逝 5029

Linux下struct input_event结构体详解

linux 下 struct input_event结构体详解

weixin_47752005的博客 7792

uniapp [全端兼容] - 详细实现全局修改设置字体大小功能效果,统一修改页面字号字体大小,一键改变字号整个项目立即生效,大中小字号预设、老年人大字模式场景,uniApp全平台兼容控制页面字号大小

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,修改字体大小,一键调整UniApp字体大小,实时改变不用刷新,动态设置字体大小,uniapp全局修改字体字号大小,如何控制全局字号,可调整显示的字体,全项目生效,老年人大字模式,改变所有页面的字体,全局设置字体大小,实现小中大的字体切换,设置改变全局字体大小功能,如何做到全平台兼容,H5APP实现全局字体大小调整,不兼容报错,用户设置字号,全局设置应用字体大小,大中小字体修改,页面设置page-me

🏆 前端领域优质创作者 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

嵌入式 LINUX 驱动开发 day03 学习USB 烧录扩展盘 的镜像,启动网络传输控制开发板的命令 , 使用网络传输在LINUX QT 运行代码传给开发板。

嵌入式 LINUX 驱动开发 day03 学习USB 烧录扩展盘 的镜像,启动网络传输控制开发板的命令 , 使用网络传输在LINUX QT 运行代码传给开发板。

she666666的博客 948

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

关于蜂鸣器,看这篇足够了

压电蜂鸣器使用压电陶瓷制作,利用了压电陶瓷的压电效应,压电陶瓷的原理简单来说就是,给它加电它会动,给它加压力,它会产生电。电磁式蜂鸣器内部有线圈,在通断时会产生反向电动势,这个反向电动势会有几十伏电压,而压电式蜂鸣器内部没有线圈,不会有此问题。再来说一下,二极管选择,续流二极管不一定非要选择肖特基二极管,普通的二极管也能胜任,比如笔者使用的这一款VC1N4148WSB,反向恢复时间也非常快,满足设计要求。续流二极管一般用在无源电磁式蜂鸣器上面,压电陶瓷类型内部没有线圈,不会产生高压,无需增加续流二极管。

李肖遥的专栏 4771

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

linux PWM蜂鸣器移植以及驱动程序分析【转】

本文转载自:https://blog.youkuaiyun.com/lxllinux/article/details/80885331 一、关于PWM: PWM(Pulse Width Modulation)——脉宽调制,它是利用微控制器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量、通信、功率控制与变换等许多领域。 通过S3C2440底板原理图可知蜂鸣...

zzb2760715357的博客 575

linux下基于S3C2440的PWM蜂鸣器移植以及驱动程序分析

========================================================================== 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: f

qicheng777的博客 1617

linux模拟按键时间,Linux模拟按键输入

在Linux应用层,可以往/dev/input/event...写入数据来模拟按键输入,程序如下:#include #include #include #include #include #include #include /*struct input_event {struct timeval time;__u16 type;__u16 code;__s32 value;};#define EV...

weixin_39984578的博客 160

linux中mice mouse和event设备

参考:读取/dev/input/mice可以得到所有鼠标的信息,只要有鼠标读它就行,因为所有的鼠标的消息都会发给它一份,而且mice是全局唯一且固定的,所以即使没有插入鼠标设备,mice也是存在测试1:拔掉所有鼠标,用键盘输入ls /dev/input发现mice还在,而mouse(i)没了测试2:插上两个鼠标hexdump /dev/input/mouse0后移动这个设备对应的鼠标,桌面光标移动...

博客 8519

struct input_event

struct input_event结构体是linux输入子系统的向应用层传递的接口。操作/dev/input/event1文件,写入个input_event结构体就可以模拟按键的输入。 #inlcude <linux/input.h> struct input_event { struct timeval time;//按键时间 __u16 ty...

zhangna的博客 947

linux蜂鸣器测试程序

必要的头文件#include //必要的头文件 #include //POSIX终端控制定义 #include #include #define PWM_IOCTL_SET_FREQ 1 #define PWM_IOCTL_STOP 0 #define ESC_KEY 0x1b //定义ESC_KEY 为ESC按键的键值

iefswang的专栏 5044

srm32f4按键蜂鸣器_STM32f4---蜂鸣器实验代码

beep.c文件下代码:#include "beep.h"//初始化PF8为输出口//BEEP IO初始化void BEEP_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟//初始化蜂鸣器对应引脚GPIOF8GPI...

weixin_39953845的博客 892

fl2440内核自带按键驱动移植及hexdump命令

主机操作系统:Centos 6.7 交叉编译器版本:buildroot-2012.08  开发板平台: FL2440  Linux内核版本: linux-3.0  开发模块: linux内核自带按键驱动移植 1、修改arch/arm/mach-s3c2440/mach-smdk2440.c添加button驱动 添加头文件 #include #inclu

樊茂林的博客 1191

蜂鸣器的软件测试方法,进阶教程:51单片机控制蜂鸣器发声实验 适合新手

说明:本文是51单片机控制蜂鸣器发声实验,和流水灯差不多,这也是入门时候非常基础而且非常重要的一个实验,同样本文重在夯实基础,如果是大神,请自觉飘过。好了我们言归正传,用单片机控制蜂鸣器发声其实也很简单,基本上和控制LED的原理差不多,但是有一点需要说明的是如果是无源蜂鸣器的话,控制方式稍微会复杂一点点,我们下面会详细介绍。我们同样从硬件和软件两个角度来给大家详细说明。硬件部分蜂鸣器顾名思义就是可...

weixin_39537049的博客 1671
上一篇: fl2440移植RTC驱动及hwclock命令使用
下一篇: fl2440内核自带按键驱动移植及hexdump命令
fml1997
博客等级 码龄10年 30粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值