历史上的今天
返回首页

历史上的今天

今天是:2024年12月23日(星期一)

正在发生

2021年12月23日 | Tiny4412之蜂鸣器驱动与led灯驱动

2021-12-23 来源:eefocus

  一: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。找到函数的对应地址,就可以对它进行使用了;


推荐阅读

史海拾趣

广东奥科公司的发展小趣事

在国内市场取得一定成绩后,广东奥科公司开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,广东奥科公司还注重品牌建设,通过提升产品质量和服务水平,逐渐树立了良好的品牌形象。这些努力使得广东奥科公司在国际市场上也获得了广泛的认可和好评。

歌普(GEPU)公司的发展小趣事

在国内市场取得一定成绩后,广东奥科公司开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,广东奥科公司还注重品牌建设,通过提升产品质量和服务水平,逐渐树立了良好的品牌形象。这些努力使得广东奥科公司在国际市场上也获得了广泛的认可和好评。

EPT公司的发展小趣事

EPT公司在其发展历程中,始终重视与科研机构的合作。早年间,EPT与哈尔滨工业大学共同研发了一种新型电池材料,这种材料具有更高的能量密度和更长的循环寿命。通过双方的技术交流和深度合作,EPT成功将这种材料应用到其产品线中,极大地提升了产品的竞争力。这一合作不仅为EPT带来了技术上的突破,也为其在电子行业树立了良好的口碑。

明微公司的发展小趣事

在电子行业中,人才是企业发展的关键因素。明微公司深知这一点,始终将人才队伍建设放在重要位置。公司积极引进优秀人才,建立完善的人才选拔和培养机制。同时,公司还注重员工培训和职业发展规划,为员工提供广阔的发展空间。这些举措使明微公司拥有一支高效、专业的团队,为公司的发展提供了有力的人才保障。

请注意,以上故事均为虚构,旨在为你提供一个关于明微公司在电子行业中发展起来的故事框架。实际发展情况可能因各种因素而有所不同。

FCI / Amphenol公司的发展小趣事

随着公司规模的扩大和市场的拓展,Amphenol公司开始实施全球扩张和多元化战略。公司不仅在美国本土设立了多个生产基地,还在欧洲、亚洲等地建立了分公司和研发中心。此外,Amphenol公司还积极涉足电子连接器等其他领域,进一步丰富了公司的产品线。这些举措不仅增强了公司的市场竞争力,也为公司的长期发展奠定了坚实的基础。

Holtek(合泰)公司的发展小趣事

随着公司规模的扩大和市场的拓展,Amphenol公司开始实施全球扩张和多元化战略。公司不仅在美国本土设立了多个生产基地,还在欧洲、亚洲等地建立了分公司和研发中心。此外,Amphenol公司还积极涉足电子连接器等其他领域,进一步丰富了公司的产品线。这些举措不仅增强了公司的市场竞争力,也为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

2004年山东省大学生电子设计竞赛作品:多功能数字钟

本帖最后由 paulhyde 于 2014-9-15 03:31 编辑 本系统的设计电路由实时时钟模块、环境温度检测模块、电网检测模块、人机接口模块、报警模块等部分组成。其中实时时钟采用DS12887,可实现年、月、日、时、分、秒等时间信息的采集和闹钟功能;温度检测 ...…

查看全部问答>

青越锋软件的常见操作问题----(PCB)

1、对于你们软件中的“Import”、“Open”这两个菜单的命名,我不是很能理解,能说说吗? 答:Open 是指打开我们的软件保存的文件,而Import是指导入其他软件转换的ASCII文件。 2、怎么我找不到网络编辑的菜单啊? 答:我们的网络编辑更加快捷 ...…

查看全部问答>

船用无线电设备图纸(JRC)

[ 本帖最后由 zcgzanne 于 2009-11-13 22:25 编辑 ]…

查看全部问答>

at91sam7s64的 原理图和pcb,供布线参考。

这个板子有点小问题。 1.xout部分当clk不能用,飞线到pclk,管脚。原因:xout信号太弱。所以,咱这个stm32的xout部分就去掉吧。 2.spck接a3p060 pin91不行,那不是全局管脚,2,4,6  93,94可以,我用的93. 3.12 - 5 v的DC-dc不能用,有 ...…

查看全部问答>

CE正在用MediaPlayer播音乐,手动休眠再唤醒后就没音乐了!但点击屏幕还有声音

如题,是怎么回事啊? 在串口里会输出 +-BattHwPowerOn() I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 等信息, I2CWrite ERROR在WaveDev的hwctxt.cpp的HW_ ...…

查看全部问答>

UI等待界面问题(无模式对话框)

wince UI设计的时候,因为有很多初始化过程在主界面显示之前,所以需要一个等待界面,现在我想用无模式对话框做等待界面,但是遇到了问题(不知道有没有别的办法,要是开线程,好像更麻烦) // 1  等待界面 CPopDialog  *spl ...…

查看全部问答>

求教嵌入式方向问题!

我现在是大三了,学校开的基础课程都还不错!但我现在很想往嵌入式方向发展, 我这有限的时间里我应重点掌握哪些课程以及哪些知识呢? 敬请高人们能为小弟引一下路!!…

查看全部问答>

第一次进win ce 几个起步问题

第一次进wince模块,问几个问题 1 把win ce 嵌入到像ARM9平台上,那么wince 这个软件价格怎样?像蛮多做实验板的开发商提供的一些软件包就以用了吗?如果真做成了一个产品,是基于wince OS的,那么这个需要正式向微软件购买使用版权费吗? 2 wince 嵌入 ...…

查看全部问答>

求汇编程序 急急急急 十万火急

急求汇编程序  要求能实现输入,查找,统计,输出 如:输入一个字符串 查找有没有A(或60)要是有的话统计一共有几个A(或60)然后把结果输出   二进制的数转换成十六进制(或十进制)以ASCII码输出 “进制的数转换成十六进 ...…

查看全部问答>