LPC1768 LED跑马灯
这篇将详细介绍立足于本设计的最小系统板的实例编程。在这里从最简单的编程开始,尽量拥有详尽的注释,尽量做到功能结构完整,
使用连接在P2 口上的4 个LED 灯实现跑马灯的效果。由于LED是采用管电流方式设计的,所以当P2.0 输出低电平时第一个LED 灯亮。设计的编程有系统初始化、通用IO 口的初始化、系统软延时和通用IO 口的输出等。首先建立一个工程并且设置好工程。在Project 里面新建一个组,命名为Source(本实验的所有代码、包括头文件都放在这里),新建一个main.c 文件,添加进Source 组。在main.c 中添加如下代码: #include "lpc17xx.h" // 包含头文件,头文件内保护系统初始化头文件 void delay(void) //软延时函数,大工程中不建议使用,占用系统资源, { //M3 有系统节拍定时器,可以达到效果 uint32_t j; for(j = 3000000; j > 0; j--); } int main(void) { uint32_t i=0; //定义变量 SystemInit(); //系统初始化函数 LPC_SC->PCONP|=(1<<15); //功耗控制,此处可以注释掉,因为复位后GPIO 默认开启 LPC_GPIO2->FIODIR=0x0000000F; //FIODIR 设置端口的输入输出 LPC_GPIO2->FIOSET=0x0000000F; //GPIO 置位,当某位为1 则置位,为0 不变 while(1) { for(i = 0; i < 4; i++) { LPC_GPIO2->FIOCLR = 1 << i; //GPIO 清零,为1 清零,为0 不变 delay(); } LPC_GPIO2->FIOSET=0x0000000F; delay(); } } 配置keil 工程的选项,选择生成HEX,配置仿真器jlink。在Source 组里添加system_LPC17xx.c和core_cm3.c(由于系统初始化函数在system_LPC17xx.c中定义,要调用该函数则要访问system_LPC17xx.c,访问方式有2 中一是工程中调用该文件对应的.h文件然后在工程中添加.c 文件,二是在工程中将.h 和.c 文件都调用)。 编译,没有错误,下载到目标板上,可以看出4 个LED 灯依次被点亮,然后熄灭,然后接着被依次点亮,循环。在程序中所偶寄存器的访问都是基于结构体的,如FIODIR 是GPIO 的输入输出配置寄存器,访问的时候要按结构体方式访问,若要访问P1 口则有LPC_GPIO1->FIODIR=0x00000000;由于PCONP 在LPC_SC 结构体定义的所以访问时需要LPC_SC->PCONP;结构体的定义都是按照功能定义在LPC17xx.h 里的,不明白的查看一下。 注:需要将LED 闪烁改成一个LED 依次点亮,可以将: LPC_GPIO2->FIOCLR = 1 << i; 修改成: LPC_GPIO2->FIOPIN =~( 1 << i); 下面介绍一下通用GPIO 的有关寄存器和中断寄存器映射表:
中断寄存器映射表
|