ARM4412裸板驱动LED灯.按键,蜂鸣器的驱动

发布者:daits摸鱼的最新更新时间:2020-02-06 来源: eefocus关键字:ARM4412  裸板驱动  LED灯  按键  蜂鸣器 手机看文章 扫描二维码
随时随地手机看文章

首先找出板子电路图,以LED为例

接下来就是电路的网标:

到对应的芯片手册里区找寄存器的描述

通过对相应寄存器的操作来操作LED灯:

首先将对应的寄存器的地址注册成一个文件:reg.h


  1 

  2 

  3 

  4 

  5 #define gpiobase 0x11000000

  6 

  7 #define GPM4CON (*(volatile unsigned long *)(gpiobase + 0x02E0))

  8 #define GPM4DAT (*(volatile unsigned long *)(gpiobase + 0x02E4))

  9 

 10 #define GPX3CON (*(volatile unsigned long *)(gpiobase + 0x0C60))

 11 #define GPX3DAT (*(volatile unsigned long *)(gpiobase + 0x0C64))

 12 

 13 #define GPD0CON (*(volatile unsigned long *)(gpiobase + 0x4000A0))

 14 #define GPD0DAT (*(volatile unsigned long *)(gpiobase + 0x4000A4))


然后是对寄存器的赋值:


  1 

  2 

  3 #include "reg.h"

  4 

  5 int(*delay)(int)=0xc3e25f90;

  6 int(*print)(char*)=0xc3e114d8;

  7 

  8 void led_off(void);

  9 void led_on(void);

 10 void pwm_off(void);

 11 void pwm_on(void);

 12 

 13 int test(void)

 14 {

 15         GPX3CON &=  ~(0xf << 8);//设置12位K2为0

 16         GPX3CON &=  ~(0xf << 12);//设置12位K2为0

 17         while(1)

 18         {

 19             if(GPX3DAT & (1 << 2))//如果3_2口为1,则说明按键没按

 20             {

 21                 led_off();

 22                 print("lease inputn");

 23 

 24             }

 25             else

 26             {

 27                 led_on();

 28                 print("K1 put down ,LED TURN ONn");

 29             }

 30             if(GPX3DAT & (1 << 3))//如果3_2口为1,则说明按键没按

 31             {

 32                 pwm_off();

 33                 print("lease inputn");

 34             }

 35             else

 36             {

 37                 pwm_on();

 38                 delay(5000);

 39                 print("K2 put down ,BWM: TURN ONn");

 40             }

 41         }

 42     return 0;

 43 }

 44 

 45 void pwm_on(void)

 46 {

 47     GPD0CON &= ~0xffff;

 48     GPD0CON |= 0x1;//配置寄存器为2

 49     GPD0DAT |= 0x1;//date=0xf

 50 }

 51 

 52 void pwm_off(void)

 53 {

 54     GPD0CON &= ~0xffff;

 55     GPD0CON |= 0x0;

 56 //  GPD0DAT &=0x0 ;//date=0xf

 57 

 58 }

 59 void led_off(void)

 60 {

 61     GPM4CON &= ~0xffff;//清零

 62     GPM4CON |= 0x0000;//0---3位清零

 63     GPM4DAT |= 0x0;//date=0xf关闭置一

 64 }

 65 

 66 void led_on(void)

 67 {

 68     GPM4CON &= ~0xffff;

 69     GPM4CON |= 0x1111;//配置寄存器3-0-----3-3全为1111,全为输出模式

 70     GPM4DAT &= ~0x1;//打开置0-4位为0000

 71 }

 72 


这里写了一个while(1)循环,如果没有按键操作的时候将会一直打印“please input”,当K1按下的时候LED会两起,输出“print("K1 put down ,LED TURN ONn");”当K2按下的时候,蜂鸣器会响起,然后打印 print("K2 put down ,BWM: TURN ONn");

dnw下载到板子测试程序:

K1按下:

K2按下:

关键字:ARM4412  裸板驱动  LED灯  按键  蜂鸣器 引用地址:ARM4412裸板驱动LED灯.按键,蜂鸣器的驱动

上一篇:ARM4412的MMU内存管理单元
下一篇:基于S3C2440A定时器的正确使用方法

推荐阅读最新更新时间:2024-11-11 23:36

ARM裸机开发bootloader—点亮LED灯
1、编写LED驱动的流程 a、原理图分析 b、芯片手册 c、思维导图 d、编写代码 2、为什么要点亮led 在嵌入式软件(bootloader、kernel)开发初期,由于串口等硬件尚未进行初始化,所以可以用来调试的手段很有限。这时通常运用点亮led作为调试的重要手段。也就是说不断改动led点亮程序的位置,来查看那段代码出现了问题,然后进行针对性的修改。 下面我用6410为例进行点亮led的介绍,其他的如2440和210流程相似。 a、原理图分析 从led的原理图我们可以看到,nLED_*低电平有效,也就是对应的s3c6410GPK4-7低电平,这个时候要引出一个概念:GPIO 什么是GPIO GP
[单片机]
ARM裸机开发bootloader—点亮<font color='red'>LED灯</font>
LED灯具散热水平提高建议解析
LED照明 灯具的可靠性(寿命)很大程度上取决于散热水平,所以提高散热水平是关键技术之一。主要是解决芯片产生多余热量通过热沉、散热体传出去,这是个很复杂的技术问题。    LED 灯具的功率,哪些LED需要考虑散热问题,功率LED需要散热。功率LED是指工作电流在100mA以上的发光二极管。是我国行标参照美国ASSIST联盟定义的,按现有二种LED的正向电压典型值2.1V及3.3V,即输入功率在210mw及330mw以上的LED均为功率LED,都需要考虑器件热散问题,有些人可能有不同看法,但实践证明,要提高功率LED的可靠性(寿命),就要考虑功率LED的散热问题。   散热有关参数与 LED散热 有关的主要参数有热阻、结
[电源管理]
单片机AT89C51--6.蜂鸣器
1. 蜂鸣器工作原理 有源蜂鸣器:指的是震荡源,内部带震荡一通电就会叫 无源蜂鸣器:要给方波,不断的接通断开,接通断开 2. 三极管工作原理 三极管 PNP和NPN的介绍 E:Emitter发射级 B:Base基级 C:Collector集电极 PNP Ieb电流 1mA 导通 NPN Ibe电流 1mA 导通 3. 原理图分析 一开始P23默认电压是5V Veb=0不导通 P23为0,导通,蜂鸣器叫 疑问:为什么不直接P23接蜂鸣器的1口,中间带电阻 单片机不是功率器件,适合做控制,不适合驱动器件。 主要是,P23是靠上拉电阻成为的5V,里面带有电阻,电流很小,即使驱动了电流也不够
[单片机]
单片机AT89C51--6.<font color='red'>蜂鸣器</font>
单片机 矩阵式按键
一、简述 在单片机应用系统中,通过按键实现数据输入及功能控制是非常普遍的,通常在所需按键数量不多时,系统常采用独立式按键。需要按键数量比较多,为了减少I/O口的占用,通常将按键排列成矩阵。测试环境为Win7-32bit-2G运存,Proteus8.5,Keil4 工程文件等:链接: https://pan.baidu.com/s/1kCf8jGU26GR_Nv1P7xxngQ 密码: 8ax7 二、效果 三、工程结构 1、Keil工程 2、仿真电路 三、编程思路 没有按键按下时,X0~X3是低电平,Y0~Y3是高电平。 某一个按键按下,设置其所在的行低电平,列就会变为低电平。 1、判断有无键被按
[单片机]
单片机 矩阵式<font color='red'>按键</font>
STM8学习笔记三----按键实验
今天做按键的实验。青风的源码中按键的引脚定义似乎有错,和开发板原理图中的不一致。 正确的引脚定义应该是: #define KEY3_PIN GPIO_PIN_3 #define KEY2_PIN GPIO_PIN_4 #define KEY1_PIN GPIO_PIN_0 #define KEY3_PORT GPIOE #define KEY2_PORT GPIOE #define KEY1_PORT GPIOI 我编写的main主函数代码: #include stm8s.h #include stm8s_clk.h #include led.h #include ke
[单片机]
51单片机实现单键重复的按键检测
/***************************************************************************** Copyright: 2013-07-27.version1.0 File name: key.c Description: 自己做的单键识别实现重复按键功能 Author: Version: version1.0 Date: 2013.7.27 History: 无 *******************************************************/ #include reg51.h sbit key=P0^0; int num=0; /****
[单片机]
51单片机学习笔记3 -- 按键输入检测
1.按键原理图绘制 51开发板的原理图如下 按原理图绘制电路图 2.按键输入检测 1.按键软件消抖 按键一般是利用机械触点的闭合、断开作用,由于机械触点的弹性作用,在其闭合、断开瞬间均存在抖动过程,抖动时间一般在5 -10ms,稳定闭合时间由操作人员的按键动作决定,一般为零点几秒到几秒。 为了保证单片机对一次闭合,仅作一次按键输入操作,必须在编程时候编写必要的程序代码(小段延时)来去除抖动影响,称键盘软件消抖。 2.按键操作电平变化 在上面讲到了软件消抖是为了准确识别单次按键操作,理想中的按键按下的电平输入是直接的高低电平切换,但实际上在按下及松开按键的瞬间,输入电平都会在高低电平中间产生抖动,可参考如下波形图
[单片机]
51单片机学习笔记3 -- <font color='red'>按键</font>输入检测
传苹果iPhone 5S采用蓝宝石触控HOME按键 对应指纹识别
    根据台湾《科技新报》周二 (14日) 报导,苹果 (Apple Inc.)(AAPL-US) 下一代 iPhone 产品,HOME 按键设计将改为触控式,以高硬度蓝宝石水晶玻璃覆盖,且将整合入指纹识别技术。 此消息一开始系由美国科技网站 Cult of Mac 报导,情报来源传为台湾某供应商,称苹果不再采用以往的实体 HOME 键设计,并将以触控虚拟按钮取代。 据称苹果采用蓝宝石水晶玻璃,系基于和光学感应器的兼容性优秀,公司目前 iPhone 5 后置摄影镜头已使用水晶玻璃盖。 报导称以往实体 HOME 按键容易出现问题和故障情况,现以固定的触控设计面板取而代之,硬度高的蓝宝石水晶玻璃能够防止刮伤,完整对应指纹感应辨识
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved