本帖最后由 chrisrh 于 2018-11-17 16:25 编辑
下载demo例程进行学习
从main函数开始往下看,头文件#include "board.h"-->go to进去,发现里面包含的还有一个头文件#include "chip.h" 在#include "chip.h"里面包含了各个寄存器的地址和各外设驱动的头文件...
接着往下#if...#elif...#else...#endif, 在board.h中 /* Board name */ #define BOARD_NXP_LPCXPRESSO_11U68 /* This is SW1. Press this to blink just the RED LED. */按键1按下只亮红灯 /* This is SW2. Press this to cycle through all LEDs.. */按键2按下三色循环
通过嵌套cnt计数使三色LED循环点亮,Board_LED_Set点亮对应的LED,0红灯,1绿灯,2蓝灯, 并宏定义了最多LED数#define MAXLEDS 3,防写错:
来到main()主函数...紧随其后的是各种初始化定义,demo主要是blinky example,是个闪烁程序 在头文件“stdbool.h”中定义了true,false,bool~
接着来到while(1){...}主循环,通过标志位ledCnt来判断处于循环状态还是闪烁状态,其中Chip_GPIO_GetPinState在头文件"gpio_11u6x.h"中被定义,用法如下:Chip_GPIO_GetPinState的用法,返回是个布尔型
而哪个灯闪烁和闪烁的频率是在main的RTC Interrupt Handler和初始化程序中,如下:
#define TICKRATE_HZ1 (10) /* 10 ticks per second */
if (ledCnt == false) { Board_LED_Toggle(0); }
/* Enable and setup SysTick Timer at a periodic rate */
SysTick_Config(SystemCoreClock / TICKRATE_HZ1 / 30);
通过debug调试可以准确的看到SystemCoreClock是48M即48000000,具体晶振几倍频,PLL代码在“chip_11u6x.c”中,通过改变TICKRATE_HZ1 即可调节blink的闪烁频率,如下图:
修改,编译,下载,led代码学习完毕,接着学习下一部分的代码!
|