嵌入式--arm
两年前的东西了,整理一下,说不定以后就会用到了。
arm对于s3c2440的这个arm的驱动的整理。
其中包括:adc,beeper 蜂鸣器,key 按键,rtc ,timer定时器,UART等的驱动。
项目地址(github):https://github.com/yanjinyun/armS3c2440Drive

****************
这是adc的驱动
#include "s3c2440.h" #if 0
void niuniu(void)
{
uart_init();
adc_init(); adc_read(); while()
{
itoa(adc_read());
delay();
}
}
#endif #if ADSTART==0
void niuniu(void)
{
uart_init();
adc_init();
beeper_init(); adc_read(); while()
{
itoa(adc_read());
if(adc_read() > )
{
beeper_on();
}
else
{
beeper_off();
}
delay();
}
}
#endif #if ADSTART==1
void niuniu(void)
{
uart_init();
adc_init();
beeper_init(); while()
{
adc_enable();
itoa(adc_read());
if(adc_read() > )
{
beeper_on();
}
else
{
beeper_off();
}
delay();
}
}
#endif
********************
蜂鸣器的驱动:
#include "s3c2440.h" #if 0
void niuniu(void)
{
beeper_init(); while()
{
beeper_on();
delay();
beeper_off();
delay();
}
}
#endif #if 1
void niuniu(void)
{
key_init();
beeper_init(); while()
{
if(key_on() == )
{
beeper_on();
}
else
{
beeper_off();
}
}
}
#endif
***************************
这个是按键的驱动key
#include "s3c2440.h" #if 0
// 按键轮巡方式
void niuniu(void)
{
led_init();
key_init(); while()
{
if(key_on() == )
{
led_on();
}
else
{
led_off();
}
}
}
#endif #if 1
// 按键中断方式
void niuniu(void)
{
beeper_init();
key_init();
extint_init();
int_init();
uart_init(); while()
{
puts("key int mode\r\n");
delay();
}
}
#endif
**************************
这个是Led灯的驱动:
#include "s3c2440.h" void niuniu(void)
{
led_init(); while()
{
led_on();
led_on();
delay();
led_off();
led_off();
delay();
}
}
这个是rtc的驱动
#include "s3c2440.h"
#include <string.h>
#include <stdlib.h> #if 0
void niuniu(void)
{
int time[];
char buf[], *p[];
int i; uart_init(); while()
{
puts("\r\nrtc> ");
gets(buf);
buf[strlen(buf)-] = '\0';
p[] = strtok(buf, " ");
for(i=; p[i-]!=NULL; i++)
{
p[i] = strtok(NULL, " ");
} if(strcmp(p[], "timeset") == )
{
time[] = atoh(p[]);
time[] = atoh(p[]);
time[] = atoh(p[]);
time[] = atoh(p[]);
time[] = atoh(p[]);
time[] = atoh(p[]);
time[] = atoh(p[]);
rtc_init(time);
} if(strcmp(p[], "time") == )
{
rtc_display();
}
}
}
#endif #if 1
void niuniu(void)
{
uart_init();
int_init();
alarm_init();
beeper_init(); while()
{
rtc_display();
sleep();
}
}
#endif
这个是定时器的驱动:
#include "s3c2440.h" void niuniu(void)
{
int_init();
timer_init();
beeper_init();
uart_init(); timer_update(); while()
{
puts("haha ......\r\n");
sleep();
}
}
这个是UART的定时器的驱动:
#include "s3c2440.h"
#include <string.h> #if 0
void niuniu(void)
{
char buf[]; uart_init(); while()
{
puts("send: ");
gets(buf);
puts("\nrecv: ");
puts(buf);
}
}
#endif #if 1
void niuniu(void)
{
char buf[];
char *p[];
int i; beeper_init();
led_init();
uart_init(); while()
{
puts("\r\nuart> ");
gets(buf);
// 去掉\r\n
buf[strlen(buf)-] = '\0';
// strtok函数会使用全局变量
p[] = strtok(buf, " ");
for(i=; p[i-]!=NULL; i++)
{
p[i] = strtok(NULL, " ");
} if(strcmp(p[], "ledon") == )
{
if(strcmp(p[], "all") == )
{
for(i=; i<; i++)
{
led_on(i);
}
}
else
{
for(i=; p[i]!=NULL; i++)
{
led_on(*p[i]-);
}
}
} if(strcmp(p[], "ledoff") == )
{
if(strcmp(p[], "all") == )
{
for(i=; i<; i++)
{
led_off(i);
}
}
else
{
for(i=; p[i]!=NULL; i++)
{
led_off(*p[i]-);
}
}
} if(strcmp(p[], "beeperon") == )
{
beeper_on();
} if(strcmp(p[], "beeperoff") == )
{
beeper_off();
}
}
}
#endif
嵌入式--arm的更多相关文章
- 移植mysql到嵌入式ARM平台
移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.p ...
- Qt在各平台上的搭建qt-everywhere(Qt for windows7-64bit, Ubuntu 12.04-32bit, 嵌入式x86平台, 嵌入式arm平台)
下载地址:http://download.qt.io/ 当进入解压好的源码包后,使用./configure –help命令,可以获得相应帮助,前面是*号的表示默认参数. +号表示该功能要求被评估,评估 ...
- 嵌入式ARM开发板学习方法步骤
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android. 平台:Cortex-A9开发板 嵌入式技术学习如何入手,从何学起呢, 以下内容简单介绍嵌入式开发的学习步骤及如 ...
- 嵌入式arm linux环境中gdb+gdbserver调试
一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采 ...
- 嵌入式ARM汇编详解
文章目录 零.预备知识 1.ARM与X86 2.ARM中指令的执行 3.ARM的九种寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 寄存器偏移寻址 寄存器基址变址寻址 批量寄存器寻址 相对寻址 堆栈 ...
- 嵌入式ARM系统开发基础
从.net到delplhi 从windows到Linxu 未来有多远? 如何突破自己? 什么是自己? 我从哪里来,要到哪里去? 世界是什么? 是世选择了我,还是我选择了世界? 怎么才能够完成蜕变? 去 ...
- 在ubuntu纯字符gdb界面下来开发调试嵌入式ARM
前面一个帖子介绍了使用eclipse来开发STM32的固件,但有的时候使用Eclipse的GDB调试器会崩溃掉,反复这样造成我们开发的效率降低,信心也会受一打击. 最近接触到的许多源码,就是在linu ...
- 嵌入式ARM开发环境搭建
1. 安装,配置,启动FTP服务 安装FTP: sudo apt-get install vsftpd 修改vsftpd的配置文件/etc/vsftpd.conf,将下面两行的'#'去掉#local_ ...
- 如何让移植的嵌入式ARM显示中文汉字
如果你急于在ARM开发板上看到Qt显示中文,而不介意稍次的效果,可以在运行Qt程序时,增加设置字体的参数,比如运行名为hello的Qt程序:./hello -fn unifont 1.首先,需要文泉驿 ...
随机推荐
- (0.2.6)Mysql安装——编译安装
(0.2.6)Mysql安装——编译安装 待完善
- bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法------dos--->unix
一些人喜欢用vim来写linux shell script, 但是, 有的人喜欢在Windows下用一些方便的编辑器(比如鼎鼎大名的Notepad++)写好, 然后拷贝文件到linux下, 结果呢, ...
- 20165324 Java实验三 敏捷开发与XP实验
20165324 Java实验三 敏捷开发与XP实验 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- (转)C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
程序在内存有五个存在区域: A:动态区域中的栈区 B:动态区域中的栈区 C:静态区域中:全局变量 和静态变量 (这个区域又可以进一步细分为:初始化的全局变量和静态变量 以及 未初始 ...
- 利用google api生成二维码名片
利用google api生成二维码名片 二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩 ...
- PKU 1129 Channel Allocation(染色问题||搜索+剪枝)
题目大意建模: 一个有N个节点的无向图,要求对每个节点进行染色,使得相邻两个节点颜色都不同,问最少需要多少种颜色? 那么题目就变成了一个经典的图的染色问题 例如:N=7 A:BCDEFG B:ACDE ...
- rem值计算------移动端开发计算方式
移动端开发: <meta name="viewport" content="width=device-width, initial-scale=1, maximum ...
- 【转】阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析
转自:http://www.csdn.net/article/2015-01-23/2823687-geographic-space-base-Hadoop [编者按]交通领域正产生着海量的车辆位置点 ...
- HBase1.2.6 预分区后,数据不进入预定分区的一个 bug
rowkey 如下: 19000015115042900001511504390000151150449000015115045900001511504690000151150479000015115 ...
- C/C++之Qt正则表达式
引言 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征.比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 ...