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-11 12:28

采用非隔离驱动器的LED灯泡减小了体积与成本
LED灯泡的价格在不断下跌。一年前,大概要花50美元才能买到一只用于替换老式灯泡的飞利浦60W调光LED灯泡,而今天,在百思买只需花17美元就可以买到其家用品牌的8W、800流明Insignia灯泡,可替换60W白炽灯泡。在LED灯泡的设计中,哪些变化导致了这种成本的下降?对LED灯泡的拆解可以让我们看清楚LED照明的一些设计趋势,例如灯泡中如何放置LED,以及采用了何种驱动器架构等。 1. Insignia灯泡的外形类似于我们熟悉的传统白炽灯,不同的是它有三个金属散热鳍片,以及塑料(而不是玻璃)的灯头。 2. 用一支Dremel工具可以去掉塑料灯泡的外壳,露出六只Cree公司的白光LED,它们照亮了灯泡的光源混合室,
[电源管理]
采用非隔离<font color='red'>驱动</font>器的<font color='red'>LED灯</font>泡减小了体积与成本
用51单片机驱动蜂鸣器
#include reg51.h //头文件 sbit BEEP=P1^5;//位定义P1的第五个端口为蜂鸣器 void delay() //延时函数 { unsigned char a,b; for(a=0;a 200;a++) for(b=0;b 200;b++); } void main()//主函数 { while(1) { BEEP=~BEEP;//取反符号 delay(); //延时 } } 注:该单片机通过ULN2003驱动蜂鸣器,其管口接于P1口的5端口。
[单片机]
基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 摘要 上一篇 博文在tiny4412上移植了MMA7660驱动程序,使用的是exynos4
[单片机]
基于<font color='red'>tiny4412</font>的Linux内核移植 -- MMA7660<font color='red'>驱动</font>移植(九-2)
用于MR16 LED灯的简单、可配置LED驱动器应用设计
MR16灯属于多面向反射灯的一种,广泛用于商业零售和家居的装饰性照明,由于它通常以卤素灯丝作为光源,故有诸多缺点如低效率、产生较多热量和卤素囊处理等问题.。但当前的LED技术提供了与MR16兼容、高度可靠、具有高性价比的卤素灯替代方案。例如,安森美半导体能驱动3颗串联LED的驱动器CAT4201就为设计MR16 LED灯的工程师提供了一个新的选择。以下将结合MR16灯的特点,介绍用替代MR16卤素灯的高能效MR16 LED灯驱动器解决方案。 卤素灯与 LED 的特性 MR16卤素灯凭借其独特的尺寸、可配置性、聚光能力、美观性和实用性,应用于很多零售和消费性应用的创意照明。常见的MR16卤素灯的光通量范围为150流明(l
[电源管理]
用于MR16 <font color='red'>LED灯</font>的简单、可配置LED<font color='red'>驱动</font>器应用设计
第四章、TIny4412 U-BOOT移植四 配置时钟频率源码分析
上篇讲了配置时钟的原理,今天就结合源码具体分析一下。在U-Boot的源码中,系统时钟的初始化是放在板文件夹下的(board/Samsung/mytiny4412)的clock_init_zthtiny4412.S文件中的system_clock_init函数中。我们的Tiny4412是拷贝的smdk4212来的,所以,大家可以先参看smdk4212的clock_init_smdk4212.S文件中的system_clock_init函数来分析,完了再修改适合自己板子的程序。 对于芯片手册中每一个模块的学习,在了解前面的基本原理后,关键的寄存器的操作,可以先浏览一下这个模块的所有寄存器的简介,对各个寄存器的作用做到心中有数,这样
[单片机]
第四章、<font color='red'>TIny4412</font> U-BOOT移植四 配置时钟频率源码分析
针对高功率LED灯泡替换应用的LED驱动器设计
本文介绍了一款针对高功率LED灯泡替换应用的LED驱动器参考设计。该驱动器可为100W A19白炽灯泡的LED替换灯提供所需的功率,它是一款非隔离式、高效率(约93%)、高功率因数(PF) LED驱动器,该驱动器可恰好放入A19灯泡内,不仅符合EN61000-3-2 C(D)标准,还可轻松达到THD限值要求。功率因数(PF)值超过0.95,因此既适用于商业应用,也适用于消费类应用。   据测算,中国照明用电约占全社会用电量的12%左右。如果把在用的白炽灯全部替换为节能灯或LED照明灯,年可节电480亿千瓦时,相当于减少二氧化碳排放4800万吨。可见LED照明市场潜力的巨大。国家发改委发布《中国逐步淘汰白炽灯路线图》也间接地推动L
[模拟电子]
针对高功率<font color='red'>LED灯</font>泡替换应用的LED<font color='red'>驱动</font>器设计

推荐帖子

如何不影响原电路的前提下,测量电阻。我采用的方法,用了电压跟随器,测得电压有偏差
开始是用开关来隔绝原电路,等测试测完电阻并完成反馈使得电阻调节到需要的阻值后,再打开开关,但是这种方法要考虑开关寿命,以及响应速度问题。后来串进去电阻,测三路电压来计算阻值,用电压跟随器隔离,但是这种方法似乎有误差,是来源于偏置电流吗?各位大佬有什么好的方法吗? 如何不影响原电路的前提下,测量电阻。我采用的方法,用了电压跟随器,测得电压有偏差电压跟随器用运放,是高阻抗,应该不影响原电路啊这图画得实在是没办法看,导线把运放都盖住了。U1的同相输入端接输出端,反相输入端也接输出端?
yangXINLONG 模拟电子
stm32f103能采集幅值为200mv频率为1KH正弦波信号吗?
stm32f103能采集幅值为200mv频率为1KH正弦波信号吗?我用列程能采集直流电压,把程序中的u16Get_Adc_Average(u8ch,u8times){u32temp_val=0;u8t;u8a;for(t=0;ttimes;t++){a=Get_Adc(ch);temp_val+=a;delay_ms(5);}returntemp_val/times;}改成u16Get_A
znoanb;bna stm32/stm8
FREESCALE单片机的C编程
FREESCALE单片机的C编程楼主介绍少了点。酒好也怕巷子深啊现在用freescale做项目手头资料太少了。支持一下,谢谢楼主分享谢谢楼主!先看看,谢谢楼主。找了很久,谢谢分享~HC08的编程指南英文的应该说还不错的资料~~~谢谢楼主分享望介绍多一点关于内容方面的这是我写的怎么什么时候传到网上了?谢谢楼主分享...谢谢,非常感谢楼主!!哥哥,怎么是英文的?害的我翻译呀先了解很感谢楼主ilikeit!thankyou下来看看感谢楼主
clark NXP MCU
MSP430单片机C语言应用程序设计实例精讲-书pdf
MSP430单片机C语言应用程序设计实例精讲-书pdfMSP430单片机C语言应用程序设计实例精讲-书pdf收藏。谢谢分享!回复楼主2iso的帖子学习一下。。。。。新人没有芯币表示压力很大回复楼主2iso的帖子学习学习收藏。谢谢分享!回复楼主2iso的帖子先搜集搜集资料,呵呵,谢了我是i新人没有芯币表示压力很大没有芯币表示压力很大谢谢楼主好资料啊免费就更好了感谢分享!顶!!!!!!!!!!!!!!下来看盾多谢好资料谢
2iso 微控制器 MCU
求一个有865GV同样功能的上DDR2内存的主板
请问大家一个问题,自认为在eeworld是高手如林的地方!865GV双通道(注意是865GV双通道)主板能用一条好的DDR内存带一条坏的DDR内存点亮主板,其它大部分主板都不行!请大家解析一下这其中的原因!现在想求一个有865GV同样功能的上DDR2内存的主板,也就是一条好的内存和一条坏的内存能点亮主板的支持DDR2内存的主板!谢谢,最好有个高手解析其中原因!求一个有865GV同样功能的上DDR2内存的主板友情帮顶下;同时学习下。非常失望!!!!不来eeworld了引用
lenglx 嵌入式系统
为什么FREERTOS里好多例程编译通不过
请问高手,为什么为什么FREERTOS里好多例程编译通不过?谢谢为什么FREERTOS里好多例程编译通不过对开发环境有要求呗,甚至是版本,有的支持文件不同
chenbingjy 实时操作系统RTOS
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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