Tiny4412之蜂鸣器驱动与led灯驱动

发布者:EtherealLight最新更新时间:2022-01-18 来源: eefocus关键字:Tiny4412  蜂鸣器驱动  led灯驱动 手机看文章 扫描二维码
随时随地手机看文章

  一:LED驱动编写

  要编写LED驱动,首先的知道开发板的构造;开发板分为核心板与底板;编写驱动的第一步就是要看开发板,找到LED灯在开发板上的位置及所对应的名字;第一步就要查看核心板电路图,以及底板电路图;最后就是查看开发板手册,然后进行程序编写:


  通过看开发板我们可以知道LED灯的位置的核心板上,在核心板上找到LED的电路图,Ctrl+F可以在文档中快捷查找:

  

通过电路图我们可以看出:LED灯的一端已经接高电平,只要给另一端加低电平LED就会被点亮。

然后查看LED在核心板上的引脚:

 

 

 

由上图我们可以看出,LED1对应的是GPM4_0

然后通过芯片数据手册可以查到它的具体用法:

 

通过手册我们可以看出:GPM4CON 置一输出,表示控制,置零输入,表示检测,GPM4DAT表示它的值和引脚的电压状态对于,值为一时表示高电平,值为零时表示底电平下面贴出代码:

 1     .global main

 2 main:

 3     mov ip, sp

 4     sub sp, sp, #12

 5     stmdb sp!, {fp, ip, lr}

 6     add fp, sp, #8

 7 

 8     ldr r3, gpmcon

 9     ldr r0, =0x1

10     str r0, [r3]

11 

12     ldr r3, gpmdat

13     ldr r0, =0x0

14     str r0, [r3]

15 

16     add sp, fp, #4

17     ldmdb sp, {fp, sp, pc}    

18 

19 gpmcon:

20     .word 0x110002e0

21 

22 gpmdat:

23     .word 0x110002e4


下面的用C语言代码是实现四个LED灯的闪烁


 1 #define GPM4CON (*(unsigned long *)0x110002e0)//宏定义

 2 #define GPM4DAT (*(unsigned long *)0x110002e4)

 3 

 4 void (*udelay)(int) = 0xc3e25f90;

 5 int main()

 6 {

 7     GPM4CON &= ~0xffff;

 8     GPM4CON |= 0x1111;

 9     

10     while(1) {

11         GPM4DAT |= 0xf;//led off

12         udelay(250000);

13         GPM4DAT &= ~0xf;

14         udelay(250000);//led on

15     }    

16 }


 跑马灯:


 1 #define GPM4CON (*(unsigned long *)0x110002e0)

 2 #define GPM4DAT (*(unsigned long *)0x110002e4)

 3 

 4 void (*udelay)(int) = 0xc3e25f90;

 5 

 6 int main()

 7 {

 8     

 9     GPM4CON &= ~0xffff;

10     GPM4CON |= 0x1111;

11     unsigned long tmp = 0xf;

12 

13     while(1) {

14 

15         if((tmp & 0xf) == 0) {

16             tmp = 0xf;

17         }

18 

19         GPM4DAT = tmp << 1;

20         tmp = GPM4DAT;

21         udelay(250000);

22 

23     }

24 

25 }


流水灯:


 1 #define GPM4CON (*(unsigned long *)0x110002e0)

 2 #define GPM4DAT (*(unsigned long *)0x110002e4)

 3 

 4 void (*udelay)(int) = 0xc3e25f90;

 5 

 6 int main()

 7 {

 8     

 9     GPM4CON &= ~0xffff;

10     GPM4CON |= 0x1111;

11     unsigned long i = 0;

12     while(1) {

13         GPM4DAT = 0xf;

14         GPM4DAT &= ~(1 << i);//流水

15         udelay(500000);//延时

16         i++;

17         if(i == 4) {

18             i = 0;

19         } 

20     }

21 

22 }


上面程序总用到的延时函数udelay(),由于U-Boot作为嵌入式Linux系统的引导,不具有标准C库中的内容。要使用像printf函数,延时函数udelay(),就需要u-boot中提供的。u-boot函数内容在u-boot源码文件中就需要u-boot中提供的。u-boot函数内容在u-boot源码文件中的System.map文件中。System.map文件是被内核所使用的符号表。符号表是一个在符号名称与它们的存储器位置间的查询表格。符号名称可能是变量的名称或是函数名称。当要查询符号名称的位置或是特定位置的符号名称时,就会需要System.map。找到函数的对应地址,就可以对它进行使用了;


关键字:Tiny4412  蜂鸣器驱动  led灯驱动 引用地址:Tiny4412之蜂鸣器驱动与led灯驱动

上一篇:Tiny4412MMU内存管理
下一篇:exynos 4412 时钟配置

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

S3F9454/9444下驱动蜂鸣器的编程示例
A.第一种,普通IO高低电平驱动法 ;运行环境: S3F9454,Fosc= 3.2MHz无分频 ;P2.0为蜂鸣输出端口 ;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US BEEP: LD BTCON,#10100011B ;看门狗禁用 DI PUSH R5 PUSH R6 ;首先配置P2.0为普通推挽输出端口 AND P2CONL,#0FEH OR P2CONL,#02H LD R6,#0FAH ;R6设置输出方波个数,本例为250
[单片机]
解读:LED驱动芯片如何影响LED灯的寿命
近几年,LED作为新型节能光源在全球和中国都赢得得了很高的投资热情和极大关注,并由户外向室内照明应用市场渗透,中国也涌现出大大小小上万家LED照明企业。让LED照明大放异彩的最主要原因正是其宣扬的具有节能、环保、长寿命、易控制、免维护等特点。   然而颇具讽刺意味的是,我们常常听闻由于LED驱动电源本身的寿命直接拖累LED照明灯具变得并不“长寿”,极大地增加了维护/使用成本;或者驱动电源的效率不高导致LED照明灯具的能效转换比并不是想象中那么高,或者由于输出电流纹波没有得到很好的控制而影响了发光品质,使得LED照明的绿色节能优势大打折扣,甚至影响了市场普及。因此,LED产业链的完善和成熟,驱动电源也是其中重要的一环。根据IM
[电源管理]
LED灯具低压驱动技术
LED照明灯具在近期得到飞跃的发展,LED作为绿色环保的清洁光源得到广泛的认可。LED光源使用寿命长、节能省电、应用简单方便、使用成本低,因而在LED手电筒、LED矿灯及便携照明;在建筑照明、装饰照明、标识牌照明;在汽车的仪表板背光、前后雾灯、第三刹车灯、方向灯、尾灯;以及在家庭照明都会得到海量的应用,欧司朗光学半导体公司2008年调查统计,全球每年家庭照明灯座出货量约为500亿个。 LED光源的技术日趋成熟,每瓦发光流明迅速增长,促使其逐年递减降价。以1WLED光源为例,2008年春的价格已是2006年春的价格三分之一,2009年春将降至2006年的四分之一。 LED绿色灯具的海量市场和持续稳定数年增长需求将是集成电路行业继
[电源管理]
tiny4412 裸机程序 七、重定位代码到DRAM
一、关于DRAM 上一章我们讲解了如何对代码进行重定位,但是将代码重定位到只有256K IRAM中作用不大。 正确的做法是将代码重定位到容量更大的主存中,即DRAM。Exynos4412中有两个独立的DRAM控制器,分别叫DMC0和DMC1。DMC0和DMC1分别支持最大1.5G的DRAM,它们都支持DDR2/DDR3和LPDDR2等,512 Mb, 1 Gb, 2 Gb, 4 Gb and 8 Gbit的内存设备,支持16/32bit的位宽。DRAM0 对应的地址是0x4000_0000~0xAFFF_FFF共1.5GB,DRAM1 对应的地址是0xA000_000~0x0000_0000共1.5GB。 图7-1、DRAM
[单片机]
<font color='red'>tiny4412</font> 裸机程序 七、重定位代码到DRAM

推荐帖子

DSP SCI在使用FIFO发送中断时,配置FIFO深度问题???
DSPSCI在使用FIFO发送中断时,配置FIFO深度时,不能产生中断,在匹配中断触发位时,并没有触发中断,请问这是怎么回事?DSPSCI在使用FIFO发送中断时,配置FIFO深度问题???不用fifo可以中断吗?
tjm告辞 TI技术论坛
ucGUI触摸屏数据输入问题
请教一下我用触摸屏输入,修改数据,我是用ucGUI的控件好,还是有其他好的方法呢?ucGUI触摸屏数据输入问题ucosii在STM32F103上移植
xiaoqzq 实时操作系统RTOS
SI4432直接模式
有没有哪位大虾做过Si4432直接模式的,给小弟指导一下啊,我用si4432做串口透明传输,如果用FIFO模式,串口速率达到9600bps的时候,空中速率要很高啊,我改用直接模式,但不知道咋个弄,资料上介绍很少,而且我是刚接触这块儿不久的一个菜鸟,各种求指导啊SI4432直接模式请问你直接模式做的怎么样了LZ。。遇到同样的问题了直接模式,速率怕做不了太高啊!我用FIFO可以到19200不丢包。不知楼主使用FIFO模式一次最大能发送多少字节,我现在引导码配置为5个字节,同步字两个字节,最多
morewater RF/无线
[GD32E231 DIY大赛]——05.硬件原理图和PCB设计
概述:结合GD32E231-START-V1.0原理图与项目系统功能的应用,绘制原理图和PCB。本次的设计软件是立创EDA软件,也是我第一次使用,总体感觉上手比较快。对专业软件来说还是有些差距,但是,它的优越性还是相当的明显,有兴趣的朋友可以点击链接(https://docs.lceda.cn/cn/Introduction/Introduction-to-EasyEDA/index.html)去了解一下,这里就不展开说了。1.器件选型结合项目应用,系统主要器件选型表如下图所
xld0932 GD32 MCU
一起“充电”,DIY自己专属应急灯!
本活动由Maxim公司冠名支持你关心LED?你关注可充电电池?在热辣的八月,一起来做做最“HOT”的设计吧——应急灯!(关于应急灯的延展:https://bbs.eeworld.com.cn/thread-155627-1-1.html)在这个平台,你可以尽情释放自己的创意,设计出自己理想中的应急灯。最终,20名优秀的创意,将受到非常礼遇:1、Maxim工程师的技术支持;2、单独为你定制PCB;3、单独为你配件;4、还有机会获得惊喜大礼——飞利浦数
EEWORLD社区 DIY/开源硬件专区
我弄了新概念英语电子书,和大家分享--4
我弄了新概念英语电子书,和大家分享--4我弄了新概念英语电子书,和大家分享--4这么棒呀!论坛里新增加了电子书的版块儿,大家有好的书籍可以放在那里与大家一起分享了!Re:我弄了新概念英语电子书,和大家分享--4这个主意不错Re:我弄了新概念英语电子书,和大家分享--4真强Re:我弄了新概念英语电子书,和大家分享--4呵呵,好物!谢谢lz分享。Re:我弄了新概念英语电子书,和大家分享--4正找呢,谢谢Re:我弄了新概念英语电子书,和大家分享--4好东东顶一下谢。。
wangqingtao 嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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