暂时未有相关云产品技术能力~
ITGEGE在线教育嵌入式开发讲师。 CSDN博客专家、CSDN-Linux特邀编辑、CSDN博乐、CSDN学院讲师,目前从事嵌入式开发领域,从事与单片机,Linux,android相关的产品开发。
#include #include #define NR(x) (sizeof(x)/sizeof(x[0])) int BinarySerach(int a[],int size,int p) { int L = 0 ; //查找区间的左端点 int R = size - 1...
如图,为单片机AD转换器的一种: ADC0804单片集成A/D转换器。它采用CMOS工艺20引脚集成芯片,分辩率为8位,转换时间为100µs,输入电压范围为0~5V。芯片内具有三态输出数据锁存器,可直接接在数据总线上。
#include #include int main() { double y; int x,m; for(y=1;y>=-1;y-=0.1) { m=acos(y)*10; for(x=1;x
在嵌入式项目开发中,LED灯的操作是一定要会的,也是基础中的基础,比如用51单片机写个跑马灯,这不简单嘛,定义一个数组把那8个跑马灯存起来,然后搞个for循环不就可以了嘛,但是,实际工作开发中写一个跑马灯可不像学校和书本上那么简单噢,往往最简单的东西,有可能也是最复杂的。
最近一直在做凌阳的GPL32001的单片机开发,主打产品是一架钢琴。如图所示: 在这架钢琴上,我们可以看到遍布着很多按键,有琴键,也有功能选择的按键,面对如此多的按键,对于一个刚出来工作的小伙伴肯定压力比较大,琴键的特征和普通按键不太一样,琴键的一个按键由两个按键组成,一个按键储存着两样信息,力度和键值。
最近在公司开发一个关于钢琴的PCBA项目,项目大概是这样的,完成各种功能的测试,准备去工厂量产的时候可以通过软件快速甄别硬件是否短路,断路等问题。 其中,甄别好坏的方法是通过比如按键,或者其它的操作然后响应音频信号的输出来甄别的,那到底原理是怎么样的呢? 音频信号定制为如果是0则输出1000hz,如果是1则输出3000hz。
在以前的文章中,有一篇 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号 在那篇文章中,具体可以参考。那时候我使用了简单的字符设备驱动框架,最终的ID号通过read方法可将ID读取出来,但是,这样做就太麻烦啦,有没有更简单的方法呢?其实有,这种方法称作IO地址的映射,而今天我们要说的是IO地址的动态映射方法,静态映射就太简单了,直接调用相应的接口,配置相应的寄存器,设置状态就可以实现。
原题:阳阳第一天买了两个苹果,一个苹果0.8元。从第二天开始,他每天购买前一天苹果数量的2倍,直到购买的苹果个数达到不超过100的最大值。编程求阳阳平均每天花多少钱? 编程思路: 假设阳阳每天购买苹果的数量为n个,花的钱的总数记为money , 由题意可以推导出公式:money = money + 0.
原题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每一天早上都吃前一天剩下桃子的一半零一个。到第十天早上想再吃时,发现 只剩下一个桃子了。
为了帮助更多编程者入门,我决定通过计算机程序解释与构造这本书上的例子来引出几个例子,帮助别人同时,也等于给自己复习,我们来看一个简单的例子----阶乘 如果我问5的阶乘是多少,那么根据公式可以推倒出:5!=5*4*3*2*1 = 120 这个算法其实很简单,实现如下: n! = n * (n -1) * (n - 2) ... * 3 * 2 * 1 ; 仔细观察,不难发现一个通项公式: n * (n -1) 。
#include #include #include #include #include #include #include #include #include #include #include #include //定义设备名称为test-dev #define...
#include #include #include #include "ioctl_led.h" #define DEV_NAME "test-dev" volatile bool empty = true; //定义一个进程资源的指针变量 struct task_struct *...
/modules/04 # lsmod test 787 0 - Live 0xbf010000 (PO) func 633 1 test, Live 0xbf00c000 (PO) test -> func ^ 引用计数 /modules/04 # rmmod func ...
#include using namespace std ; #define NR(x) (sizeof(x)/sizeof(x[0])) class node { public : int number ; node *next ; ...
#include using namespace std ; class Tree { public : int number ; class Tree *left ; class Tree *right ; vo...
#include #include typedef struct tree { int number ; struct tree *left ; struct tree *right ; }TREE; //对树插入节点 void insert_tree(TREE **he...
静态库 .o文件的集合 制作 ar -cr libxxx.a xxx1.o xxx2.o xxx3.o ... 编译 gcc main.c -l xxx [-L 库路径] (如果不加-L则在标准库路径下查找) 运行 ./a.out 基本概念: 静态库又称为文档文件(Archive File)。
#include #include //队列大小 #define SIZE 1024 static int queue[SIZE] = {0}; static int head , tail ; //0 1 int Is_Empty(void) { //判断队列是否...
#include #include #define uchar unsigned char #define uint unsigned int #define SIZE 1024 static int stack[SIZE] = {0}; static int index =...
#include #include #include int main(void) { int len ; int i ; int flag = 0 ; int count = 0 ; char buffer[20] = {'\0'} ;...
#include #include #define NR(x) sizeof(x)/sizeof(x[0]) int Del_char(const char *input, char *output) { int i , j , k = 0; int flag ; ...
#include #include #include #define NR(x) (sizeof(x)/sizeof(x[0])) struct node { int data ; struct node *next ; }; void top_append_li...
typedef unsigned short TUINT16; #define RGB565(R, G, B) \ (((TUINT16) ((R) >> 3)) > 2)) > 3)) #define RGB555_TO_RGB565(X) \ ((((X)&0...
#include //使用二维数组实现 扫雷 int main() { char ui[8][8]={ '+','+','+','+','+','+','+','+', '+','+','+','+','+','...
在PHP中,变量的定义和C语言定义的方法是类似的,但是在PHP中,变量使用起来就非常灵活,一个变量既可以做整型,也可以是浮点型,也可以是字符串或者字符类型,通通只要在变量名前面加一个$然后加上你的变量名,再初始化,那么编译器在编译的时候就可以将对应的转换成为相应的数据类型,这点是跟bash shell 很像的,我们可以来看看: php中的变量 变量: 值存储在内存中 有名称的信息。
学过C语言的话,上手PHP语言就非常快了,如果你有bash shell的基础,那恭喜你,上手PHP会更快,我们先来了解一下一些比较简单的东西,界定符和注释在PHP中的写法: 一 php文档的语法结构 .php ---> html div css php mysql js jquery ajax php定界符:1 标准定界符 xml风格 常用 *******2 短标记了解:3 asp风格 4 scriptphp代码php定界符 可以写在页面的任意位置。
首先我们先来了解一下PHP的一些相关的基础知识: PHP是啥? php其实就是超文本预处理程序,一种制作网站的脚本程序。 通常PHP的运行环境有以下两种:wamp windows+apache+mysql+php 开发 学习 研究lamp linux+apache+mysql+p...
原子变量: arch/arm/include/asm/atomic.h 定义并初始化 atomic_t v = ATOMIC_INIT(0); 写 void atomic_set(atomic_t *v, int i); 读 int atomic_read(atomic_t *v); ...
我们大概都了解,锁这种机制其实是为了保护临界区代码的,关于使用和定义,我总结的API如下: #include 定义自旋锁 spinlock_t lock; 初始化自旋锁 void spin_lock_init(spinlock_t *lock); 获取自旋锁 void spin_...
从百度上得知: 这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性! 所以有这样的一个接口,那就很牛逼了,至少可以做个游戏来玩下,结合ASCII码,很容易写个方向键控制的2048或者贪吃蛇等等有趣的游戏出来。
#include #include #define Mode //如果定义了Mode,那么就执行这个函数 #ifdef Mode void print_h(void) { printf("world\n") ; } #else //如果没有定义Mode,那么就执行下面这个函数 vo...
#!/bin/sh # $1 MOUNTDIR $2 TARGETDIR $3 ERRORLOG #参数检查 if test $# -ne 3 then echo "argument check fail" exit 0 fi for i in `ls $1` ...
#!/bin/sh TARGETIP=192.168.88.3 #这里是你要挂在的ftp服务器的IP地址 MOUNTDIR=/mnt TARGETDIR=/root/Desktop/Work ERRORLOG=/tmp/Copy.
查寻内核版本 uname -a // uname -r 进程快照 ps report a snapshot of the current processes USER 进程所属用户 PID 进程ID 进程号 %CPU 进...
题目:有一个3X4矩阵,要求输出其鞍点(行列均最大的值),以及它的行号和列号。 int a[3][4] = {{123,94,-10,218}, {3,9,10,-83}, ...
首先: 1、编写一个hello.sh的程序 hello.sh vim hello.sh #!/bin/sh #作者:yangyx echo “hello shell” 编写完成,接下来我们还需要对她赋予权限 chmod a+x hello.
http://jingyan.baidu.com/article/b24f6c82cba6dc86bfe5da9f.html
一、Linux下多任务机制的介绍 Linux有一特性是多任务,多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。 多任务操作系统使用某种调度(shedule)策略(由内核来执行)支持多个任务并发执行。
标准I/O的由来 标准I/O指的是ANSI C 中定义的用于I/O操作的一系列函数。 只要操作系统安装了C库,标准I/O函数就可以调用。换句话说,如果程序中使用的是标准I/O函数,那么源代码不需要任何修改就可以在其他操作系统下编译运行,具有更好的可移植性。
例如: echo -ne "\33[32m" 可以将字符的显示颜色改为绿色 echo -ne "\33[3;1H" 可以将光标移到第3行第1列处具体的摘抄一些如下: \33[0m 关闭所有属性 \33[1m 设置高亮度 \33[4m 下划线 \33[5m 闪烁 \33[7m 反...
#include #include #include /*插入函数 ccode待插入的字符 anystring被插入的字符串 spos插入到字符串的位置*/ void cinsert(char ccode,char *anystring,int spos) ; /*删除函数 anystri...
【1】一个CPU寻址能力是8KB,那么它的地址总线的宽度为?怎么样计算的? 一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方单元。所以 2^N=8*1024=(2^3)*(2^10)=(2^13)=8192 。
这节,我们继续上,中(以前的日志有)篇目进行分析,结合一个真实的驱动案例来描述linux内核中驱动的中断机制,首先我们先了解一下linux内核中提供的中断接口。 这个接口我们需要包含一个头文件:#include 在中断接口中,最重要的是以下的接口函数: 1、这个是...
OV2685 : CHIP_ID address : 0x300A default : 0x26 address : 0x300B default : 0x85 address : 0x300C defailt : 0x0...
obj-y:打个比方,我要编译的是hello.c这个文件,obj-y就会把hello.c或者hello.c编译生成的hello.s文件链接到内核中去。 obj-m:打个比方,我要编译的是hello.c这个文件,obj-m则是编译成hello.ko,在系统启动的时候,需要手动insmod进行加载,才能加载到内核里面去。
文件类型 权限 硬链接数 所属用户名 文件大小 文件名字 - rw- r-- r-- 1 root root 122 07-22 11:07 abc.
快捷键 ctrl + shift + '+' 将当前的终端放大 ctrl + '-' 将当前的终端放小 ctrl + l 清屏 ctrl + u 将光标前的所有字符删除 ctrl + k 将光标后面的所有字符删除...
如图所示: 数字电路中,把电压的高低用逻辑电平来表示。逻辑电平包括高电平和低电平这两种。不同的元器件形成的数字电路,电压对应的逻辑电平也不同。在TTL门电路中,把大于3.5伏的电压规定为逻辑高电平,用数字1表示;把电压小于0.3伏的电压规定为逻辑低电平,用数字0表示。
现态:当前所处的工作状态 条件:触发动作或者状态迁移的条件((在按键系统中,就是指按键的值) 动作:条件满足后执行的动作(也就是响应各个任务) 次态:状态满足后要迁移的新状态。 代码实现: int step = 0 ; switch(step) { case 0 : .
我们可以看看下图,下图就是一个典型的PWM的波形图。 T是一个周期,T1就是高电平所占用的时间,T2就是低电平所占用的时间。 如上图所示T1为脉冲宽度(就是导通时间),周期为T,则输出电压的平均值为U=VCC*T1/T=a*VCC,a是占空比,变化范围为0≤a≤1。