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

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. PAT 1130 Infix Expression[难][dfs]

    1130 Infix Expression (25 分) Given a syntax tree (binary), you are supposed to output the correspond ...

  2. Flask组件 flask_session

    flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如: redis memcac ...

  3. SQL Server WITH ROLLUP、WITH CUBE、GROUPING语句的应用

    CUBE:CUBE 生成的结果集显示了所选列中值的所有组合的聚合. ROLLUP:ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合. GROUPING:当行由 CUBE 或 ROLLUP ...

  4. smarty模板(转载)

    一.smarty的程序设计部分: 在smarty的模板设计部分我简单的把smarty在模板中的一些常用设置做了简单的介绍,这一节主要来介绍一下如何在smarty中开始我们程序设计.下载Smarty文件 ...

  5. 优化css,增加性能

    转载自:https://www.cnblogs.com/xiaoloulan/p/5801663.html 前端性能优化一直是一个比较热门的话题,我们总是在尽我们最大的努力去,提高我们的页面性能,比如 ...

  6. ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps (弱线段树)

    线段树节点维护区间最小值,查找时优先从左侧的区间寻找. 每一次循环都在树中不停寻找第一个小于等于当前持有数的值,然后抹去,直到找不到为止. #include<cstdio> #includ ...

  7. 关于ldap的学习

    主要从以下网站学习了相关基础知识概念,安装与基本配置. http://www.aikaiyuan.com/8269.htmlhttps://segmentfault.com/a/11900000026 ...

  8. 【.Net基础二】浅谈引用类型、值类型和装箱、拆箱

    目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 引 ...

  9. 解决“检测到有潜在危险的Request.Form值”

    先看如下 web.config 的代码: <system.web>     <compilation debug="true" targetFramework=& ...

  10. 寻路算法A*, JPS(跳点搜索)的一些杂谈

    A*是一个比较经典的启发式寻路算法.是基于dijkstra算法,但是加入了启发函数,使路径搜索效率更高.实现起来很简单.不过要做到通用性高,比如支持各种不同类型的地图,甚至不仅仅是地图,而是个图结构如 ...