您现在的位置:首页 > 环球平台app下载 >

环球平台app下载

用LED灯完成跑马灯作用和用按键操控LED灯的亮灭

   时间:2023-06-10 02:16:23   来源:环球平台app下载

  若恒子的学习记载对您有协助,那么将是我极大的侥幸;假如文章傍边有写得不妥的当地,还望您指出,我将感谢备至!

  恒子所用的开发板是韦教师的JZ2440,故之后的代码都是在JZ2440上运转成功的代码(都是裸板程序)。假如您是用其他开发板,也只需对代码进行简略修正。

  首要清晰咱们要运用LED的为D10、D11和D12来完成跑马灯作用,经过检查原理图咱们知道D10–>

  GPF4、D11–>

  GPF5、D12–>

  GPF6(–>

  表明引脚衔接),当对应引脚输出低电平(0)时对应的LED灯点亮,输出高电平(1)时平息。

  然后经过检查芯片手册咱们知道需求装备的GPIO管脚寄存器有GPFCON和GPFDAT,对应的寄存器地址和相应位的装备信息如下图。

  这儿的C文件并不是在咱们常用的MDK中编译的,那么这个C文件中的main函数由谁调用呢?这是咱们在MDK中编写代码所不需求考虑问题,由于MDK是一个高度集成的软件,它早已将这一切帮咱们做好了,而咱们需求做的仅仅只是点几个按钮就可以了。MDK中也是需求汇编发动代码去调用main函数的,只不过它帮咱们设置好罢了。既然是在裸机上开发程序那么咱们就得自己完成一个汇编发动代码去调用main函数。

  知道了是谁调用main后咱们又该怎样才能让这个C代码在咱们的裸机开发板上运转呢?由于咱们知道局部变量是保存在栈中的,那既然是栈咱们就得设置内存了(SRAM),而NOR发动和NAND发动的片内4K SRAM是不一样的,它们的具体地址看下图。由于咱们是运用满减的栈,所以咱们得让sp指向栈最高的地址处。

  * 往nand flash的0地址写0,随后读取0地址的值,判别是否为0

  其间的r0、r1、sp为ARM中的寄存器,ARM状况下共有14个通用寄存器r0~r14,别的还有r15、CPSR(当时程序状况寄存器)和SPSR(程序维护状况寄存器),其间 r13 为 lr (衔接寄存器)、r14 为 sp (仓库指针)、r15 为pc (程序计数器)。