首先给大家拜个年吧
。祝大家新春快乐,也祝论坛越办越好。
今天好不容易清闲下来了有空写写这几天对板子得研究咯。
首先是下载的LPCOPEN开发包吧 包括了一些例程可以帮助我们进行开发至于怎么用大家可以参考强仔00001写的文章
https://bbs.eeworld.com.cn/thread-456173-1-1.html本人偷个懒,直接拿来主义咯。。。
、 然后就是说一下强仔的另一篇文章
https://bbs.eeworld.com.cn/thread-456148-1-1.html里的LED的例程是有问题的,board.c或者头文件的定义和这个板子是不对照的。
不过别的部分写的还是挺好的。。
由于本人以前没怎么接触过LPC系列的单片机所以只能先看各位大神的文章咯
好了言归正传说说我的劳动成果吧主要程序实现的功能就是用ISP的按钮来依次点亮3个LED灯。先来几张效果图吧。
晚上加上屋子有点暗效果不咋滴大家将就看吧
顺道说一下板子得LED太刺眼了
真心有点扛不住,然后就是吐槽一下按键。个人感觉可能因为太小的缘故吧按着很不舒服。
然后再来点代码分析咯。
int main()
{
int i = 0;
Chip_GPIO_Init(LPC_GPIO); //初始化IO
Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 31); //设定PIO0的第31个脚为输出
Chip_GPIO_SetPinState(LPC_GPIO, 0, 31, 1); //设定PIO0的第31个脚为输出高电平
Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 30);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 30, 1);
Chip_GPIO_SetPinDIROutput(LPC_GPIO, 0, 29);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 29, 1);
Chip_GPIO_SetPinDIRInput(LPC_GPIO, 0, 24); //设定PIO0的第24个脚为输入
while (1) {
if(Chip_GPIO_ReadPortBit(LPC_GPIO, 0, 24)) //读按键是否按下
i = i;
else
{
if(i == 2)
i = 0 ;
else
i = i+1;
while(Chip_GPIO_ReadPortBit(LPC_GPIO, 0, 24)==0); //按键释放检测
}
switch(i) //依次点亮3个LED
{
case 0 :
Chip_GPIO_SetPinState(LPC_GPIO, 0, 31, 0);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 30, 1);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 29, 1);
break;
case 1 :
Chip_GPIO_SetPinState(LPC_GPIO, 0, 30, 0);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 31, 1);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 29, 1);
break;
case 2 :
Chip_GPIO_SetPinState(LPC_GPIO, 0, 29, 0);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 31, 1);
Chip_GPIO_SetPinState(LPC_GPIO, 0, 30, 1);
break;
}
}
}
代码只做简单分析。
然后简略介绍一下lib_chip_lpc5410x的工程
主要为芯片的各种驱动其中最重要的为chip.h类比于stm32f10x.h有兴趣的网友可以参照芯片手册的寄存器定义看一下这个文件
然后需要操作那些外设在看相关外设的驱动文件。驱动文件目录如下
这个实验主要用到的函数都在GPIO那个驱动文件中,有兴趣的网友可以自己看一下。时间不早了就写到这吧