倒腾了几天的软件安装与驱动,实在是消耗巨大,本想写一写,但已有不少帖子零散地介绍了,就不再谈了。由于该板的外接资源有限,这里还是用板上的LED灯和小按键做一个车灯闪动的模拟程序与大家分享。 该程序的功能是: 按 K1-左闪 按 K3-右闪 按 K2-双闪 按 K4-关闪灯 当然为了看上去好看些,把本来是左右车灯的双闪给移到了中间的两个灯上,使亲们也有个均等的闪光机会,别像咱们这些电工们,只是在自娱自乐,至于光看能从未走出过房间。 K4键其实是个复位键,由于初始化时是关闭各灯的,所以用来其关灯的作用。 由于照片的动态效果不明显,这里就不上效果了,程序执行时自己来体验吧。 程序内容如下,只需把例程1-LED的内容替换后加以编译、下载即可。 - int main(void)
- {
- uint8_t f1=0,f2=0,f3=0;
- DelayInit();
- /* LED */
- GPIO_QuickInit(LED0_PORT, LED0_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED1_PORT, LED1_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED2_PORT, LED2_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED3_PORT, LED3_PIN, kGPIO_Mode_OPP);
- /* KEY */
- GPIO_QuickInit(HW_GPIOB, 0, kGPIO_Mode_IPU);
- GPIO_QuickInit(HW_GPIOB, 1, kGPIO_Mode_IPU);
- GPIO_QuickInit(HW_GPIOA, 4, kGPIO_Mode_IPU);
- GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- while(1)
- {
- if(GPIO_ReadBit(HW_GPIOB, 1) == 0) // K3 左
- {
- f1=1; //f1=~f1;
- f2=0; GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- f3=0; GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- }
- if(f1) GPIO_ToggleBit(LED3_PORT, LED3_PIN); // 绿 左
-
- if(GPIO_ReadBit(HW_GPIOA, 4) == 0) // K2 中
- {
- f2=1;
- f3=0; GPIO_WriteBit(LED0_PORT, LED0_PIN, 1);
- f1=0; GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- }
- if(f2)
- {
- GPIO_ToggleBit(LED1_PORT, LED1_PIN); //黄 中
- GPIO_ToggleBit(LED2_PORT, LED2_PIN); //蓝
- }
-
- if(GPIO_ReadBit(HW_GPIOB, 0) == 0) // K1 右
- {
- f3=1; //f3=~f3;
- f1=0; GPIO_WriteBit(LED3_PORT, LED3_PIN, 1);
- f2=0; GPIO_WriteBit(LED1_PORT, LED1_PIN, 1);
- GPIO_WriteBit(LED2_PORT, LED2_PIN, 1);
- }
- if(f3) GPIO_ToggleBit(LED0_PORT, LED0_PIN); // 红 右
-
- DelayMs(100);
- }
- }
复制代码
|