嵌入式--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.首先,需要文泉驿 ...
随机推荐
- how to use greendao in android studio
http://www.arjunsk.com/android/use-greendao-android-studio/ 1.新建一个java文件MainGenerator.java: import d ...
- html5 live stream
一.传统的安防监控/流媒体音视频直播基本架构 A/V device 信号采集(yuv/rgb) ---> 转码(h264/265) ---> 网络推送(rtsp/rtmp/http/onv ...
- 在eclipse添加第一次添加Python项目时,提示: Project interpreter not specified
按图片操作,添加Python的路径,就能解决该问题
- 怎么创建Porlet项目
首先找到你liferay安装的地址D:\liferay\liferay-bundles-6.1.1\plugins-sdk,找到portlets这个文件夹点击(shift+鼠标右键)进入命令行窗口,写 ...
- NHibernate和Castle调试过程中,如何输出SQL的问题
首先,我在此需要强调的是,不管是Castle或者NHibernate输出SQL,都应该是属于NHibernate的技术,Castle的本身也是基于NHibernate开发的ORM框架 ...
- HDU 1950 Bridging signals(LIS)
最长上升子序列(LIS)的典型变形,O(n^2)的动归会超时.LIS问题可以优化为nlogn的算法. 定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则记录最小的那个最末元 ...
- 63. Unique Paths II(有障碍的路径 动态规划)
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- 两句话,实现android 4.4以上实现沉浸式状态栏
效果图如下,就是状态栏和actionbar保持一致的颜色,非常漂亮 1:在Activity的OnCreate函数 if (Build.VERSION.SDK_INT >= Build.VERSI ...
- TOSCA自动化测试工具--openURL
在folder下面create test case 输入自己的url,actionMode 是input, String类型
- java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 异常处理,及MySQL数据库编码设置
java.sql.SQLException: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,C ...