历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2020年02月06日 | ARM4412裸板驱动LED灯.按键,蜂鸣器的驱动

2020-02-06 来源:eefocus

首先找出板子电路图,以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按下:

推荐阅读

史海拾趣

ERA Transformers公司的发展小趣事

在电子行业中,ERA Transformers公司以其开创性的技术而闻名。该公司专注于研发和生产高效的电子变压器,以满足不断增长的电子设备需求。在一次研发过程中,公司工程师们面临了一个重大挑战:如何提高变压器的能效和稳定性。经过数月的深入研究与反复试验,他们终于开发出了一种新型的高效能变压器,该变压器采用了先进的材料和独特的设计,显著提高了能效和稳定性,这一创新技术的突破使得ERA Transformers公司在电子行业中崭露头角。

Deutron Electronics Corp公司的发展小趣事

在技术优势的基础上,Deutron Electronics Corp开始了积极的市场拓展和品牌建设工作。公司参加了多个国际电子展会,展示了其创新产品和技术实力,成功吸引了众多潜在客户的关注。同时,公司还加大了对品牌宣传的投入,通过广告、公关等手段提升了品牌知名度和美誉度。这些努力使得Deutron Electronics Corp的产品逐渐在市场上占据了一席之地。

CINTERION公司的发展小趣事

近年来,随着智能电网技术的快速发展,CINTERION凭借其领先的M2M通信技术,在该领域取得了显著突破。其EU3 M2M模块因其卓越的性能和稳定性,荣获了SmartGrid.TMCnet.com颁发的2011年智能电网杰出奖。这一奖项的获得,不仅证明了CINTERION在智能电网技术创新方面的实力,也为公司在该领域的进一步发展奠定了坚实基础。

思瑞浦微电子科技(3PEAK INCORPORATED)公司的发展小趣事

随着汽车行业的快速发展和智能化趋势的加强,CINTERION针对汽车市场推出了专用级M2M模块。其中,AC75i和AC65i作为第六代汽车级模块,以其高度的集成性、稳定性和安全性受到了市场的广泛认可。这些模块的推出,不仅满足了汽车行业对无线通信技术的需求,也进一步巩固了CINTERION在汽车M2M市场的领先地位。

Cystech公司的发展小趣事

C-TECH Co., Ltd自1997年成立以来,始终将技术创新作为公司发展的核心驱动力。在2008年,公司敏锐地捕捉到了5G通信技术的潜在商机,开始投入大量资源进行研发。经过数年的不懈努力,终于在2018年成功开发出了5G(3.5GHz)频段中频、射频SAW(声表面波)滤波器,这一技术突破为公司在5G通信市场赢得了先机。通过不断的技术创新,C-TECH Co., Ltd逐步确立了在电子行业中的领先地位。

Edsun Laboratories Inc公司的发展小趣事

在竞争激烈的电子行业中,品质是企业生存和发展的关键。ECM Electronics Limited.深知这一点,始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测、包装等各个环节都严格把关,确保每一件产品都符合高标准的质量要求。正是凭借过硬的产品品质,ECM赢得了客户的信赖和市场的认可。

问答坊 | AI 解惑

谁有 ACD资料

谁有ACD 资料啊…

查看全部问答>

IGBT短路失效机理

IGBT负载短路下的几种后果 (1) 超过热极限:半导体的本征温度极限为250℃,当结温超过本征温度,器件将丧失阻断能力,IGBT负载短路时,由于短路电流时结温升高,一旦超过其热极限时,门级保护也相应失效. (2) 电流擎住效应:正常工作电流下,IGBT由于薄 ...…

查看全部问答>

无线信号 高手进

我在这招了半天也莫有找到我要的答案,发个帖看看有没有高手给我支支招。 关于无线信号如何检测的问题,方法越具体越多越好。。。用示波器的话说明具体的用法。我琢磨很久了,奈何能力有限。。。…

查看全部问答>

proteus 的键盘在哪

单个的键(不是开关) 和 矩阵键盘…

查看全部问答>

条码手持终端应用程序开发!!!

条码手持终端应用程序开发!!! 本人在条码行业有多年的工作经验,一直从事条码手持终端应用程序的开发 开发过多种设备: CASIO DT900,DT300,DTX10; Cipher 711 ; SYMBOL MC50,MC1000,PPT8800; Intermec 700系列 有需要的请联系本人 QQ:6 ...…

查看全部问答>

急!!!如何在PC机上实现对单片机的控制(用VC++6.0编程)

小弟正在想弄一个在PC机上实现对单片机的控制,但不知道从哪个方面入手? 希望各位达人给予小弟一些指点.发个程序给小弟参考参考(用C语言编写的)…

查看全部问答>

正式入手STM8S103K3

经历了很多推销的宣传,今天买了10片样品,准备把以前ATMEL8的东西都移植过来. 有几个问题,一直没搞明白: 1. STM8S103K3会不会象ATMEL那样,1000元就能把代码都读出来?STM8S103K3的     解密难度有多大? 2. 以前一直用ICC和KEIL开 ...…

查看全部问答>

2812程序烧到片内flash中运行,能否用CCS和仿真器观察内部变量

2812程序烧到片内flash中运行,能否用CCS和仿真器观察内部变量, 调试电机程序,使用仿真器容易跑飞,希望能烧到flash中运行,同时也希望能像在ccs里仿真一样观察几个关键变量,听有的工程师说是能实现的,希望有能得到指点?…

查看全部问答>

用io口控制k9k8G08U0A写不进去数(急)

这是个试验程序,就是把整页写入同一个数据,,另外ID什么都可以读出来,,个人感觉数据是可以读出来的,,但读出来的全是FF,2112个FF后是64个0x15,我把读命令改错的话,读出来的是那个输入的数据,说明内部没把数据读出来,这是不是说明FF读出来 ...…

查看全部问答>

有源电力滤波器的控制技术的实现

在整个APF中基准电流的产生方法是核心环节,只有产生正确的基准电流信号才能很好的补偿谐波和无功电流。当只是补偿谐波电流时只需获取负载电流中的谐波分量即可,当补偿谐波及无功时除了要获取谐波电流信号外还需获取基波电流中的无功分量。基准电 ...…

查看全部问答>