在做实验2按键输入时,用自己写的程序发现两个LED灯都不亮,代码如下,没有写出的部分与光盘给的代码相同:
(USER文件夹中的test.c)
#include <stm32f10x_lib.h> #include "delay.h" #include "sys.h" #include "usart.h" #include "led.h" #include "key.h" int main(void) { u8 temp; u8 i; Stm32_Clock_Init(9); delay_init(72); LED_Init(); //初始化与LED连接的硬件接口 KEY_Init(); while(1) { temp=KEY_Scan();//得到键值 if(KEY0==1&&KEY1==1&&KEY2==0)// 无按键按下 i=1; while(i) { if(temp) { switch(temp) { case 1: LED0=!LED0; break; case 2: LED1=!LED1; break; case 3: LED0=!LED0; LED1=!LED1; break; } } else { delay_ms(10); } temp=0; if(KEY0==0||KEY1==0||KEY2==1) i=0; } } }
(HAREWARE文件夹中的key.c)
u8 KEY_Scan(void) { JTAG_Set(JTAG_SWD_DISABLE); if(KEY0==0||KEY1==0||KEY2==1) { delay_ms(10);//去抖动 if(KEY0==0) { JTAG_Set(SWD_ENABLE); return 1; } if(KEY1==0) { JTAG_Set(SWD_ENABLE); return 2; } if(KEY2==1) { JTAG_Set(SWD_ENABLE); return 3; } } else JTAG_Set(SWD_ENABLE); return 0; }
求原子大哥正解,小弟不胜感谢!!!
|