两年前的东西了,整理一下,说不定以后就会用到了。

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的更多相关文章

  1. 移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台  MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.p ...

  2. Qt在各平台上的搭建qt-everywhere(Qt for windows7-64bit, Ubuntu 12.04-32bit, 嵌入式x86平台, 嵌入式arm平台)

    下载地址:http://download.qt.io/ 当进入解压好的源码包后,使用./configure –help命令,可以获得相应帮助,前面是*号的表示默认参数. +号表示该功能要求被评估,评估 ...

  3. 嵌入式ARM开发板学习方法步骤

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android. 平台:Cortex-A9开发板 嵌入式技术学习如何入手,从何学起呢, 以下内容简单介绍嵌入式开发的学习步骤及如 ...

  4. 嵌入式arm linux环境中gdb+gdbserver调试

    一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采 ...

  5. 嵌入式ARM汇编详解

    文章目录 零.预备知识 1.ARM与X86 2.ARM中指令的执行 3.ARM的九种寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 寄存器偏移寻址 寄存器基址变址寻址 批量寄存器寻址 相对寻址 堆栈 ...

  6. 嵌入式ARM系统开发基础

    从.net到delplhi 从windows到Linxu 未来有多远? 如何突破自己? 什么是自己? 我从哪里来,要到哪里去? 世界是什么? 是世选择了我,还是我选择了世界? 怎么才能够完成蜕变? 去 ...

  7. 在ubuntu纯字符gdb界面下来开发调试嵌入式ARM

    前面一个帖子介绍了使用eclipse来开发STM32的固件,但有的时候使用Eclipse的GDB调试器会崩溃掉,反复这样造成我们开发的效率降低,信心也会受一打击. 最近接触到的许多源码,就是在linu ...

  8. 嵌入式ARM开发环境搭建

    1. 安装,配置,启动FTP服务 安装FTP: sudo apt-get install vsftpd 修改vsftpd的配置文件/etc/vsftpd.conf,将下面两行的'#'去掉#local_ ...

  9. 如何让移植的嵌入式ARM显示中文汉字

    如果你急于在ARM开发板上看到Qt显示中文,而不介意稍次的效果,可以在运行Qt程序时,增加设置字体的参数,比如运行名为hello的Qt程序:./hello -fn unifont 1.首先,需要文泉驿 ...

随机推荐

  1. 【足迹C++primer】38、关联容器操作(2)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/35244805 关联容器操作(2) map ...

  2. [转发]SPRING MVC3.2案例讲解--SPRING MVC3的@ResponseBody和ResponseEntity

    在传统的开发过程中,我们的控制CONTROLL层通常需要转向一个JSP视图:但随着WEB2.0相关技术的崛起,我们很多时候只需要返回数据即可,而不是一个JSP页面. SPRING MVC3的@Resp ...

  3. redis的客户端medis

    medis是用js写的redis客户端工具,界面很好用,也很有用.点击这里可以下载到mac下的软件包. 下面是截图:         完结.

  4. Java compiler level does not match解决方法, java 修改编译用的jdk的方法

    从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource Path Location Type Java compiler level d ...

  5. python中的编解码小结

    在用python27写文件或者上传文件时遇到这样一个问题:.在网上搜了下说加入以下三行代码可以解决: import sys reload(sys) sys.setdefaultencoding('ut ...

  6. 树莓派搭建Git服务器

    目录 安装ssh 安装git-core 新增git用户 设置git用户目录 [服务端]设置git仓库 [客户端]设置git仓库 设置ssh登录 安装ssh sudo apt-get install s ...

  7. 一步一步学EF系列三【数据迁移】

    我们每篇的内容都不多,所以希望在学习的过程中最后能亲自敲一下代码 这样更有利于掌握. 我们现在接着上篇的例子,我们现在给随便的表增加一个字段 CreateTime 创建日期 运行一下 看看会怎么样 修 ...

  8. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) D. Innokenty and a Football League

    地址:http://codeforces.com/contest/782/problem/D 题目: D. Innokenty and a Football League time limit per ...

  9. C++与C混编

    C++与C混编 本案例通过实现一个简单的UDP服务器来说明C++与C的混合编程问题 C代码 通过C代码来对UDP服务器的创建,监听进行封装 udp.c文件 #include <sys/types ...

  10. C++ vector 用法

    转自http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html#undefined 在c++中,vector是一个十分有用的容器,下面对这 ...