本帖最后由 WAMCNCN 于 2020-5-22 12:57 编辑
跑官方给出的例程是熟悉开发板的捷径了,但要是例程出了问题,就要找问题了,虽然麻烦点,但也进一步熟悉了。
先说库代码BLINK里的IOToggle ,四个LED一起翻转肯定看不出问题。再说IOKey,编译下载到板子上根本跑不起来或者说现象和代码愿意不不符(扫描按键,当每次按下按键时,翻转控制的LED)。
看图说话:
K1--PB1 K2--PB2 K3--PB10 K4--PB11
LD1--PA15 LD2--PB3 LD3--PB4 LD4--PB5
代码里:
#define LED4_ON() GPIO_ResetBits(GPIOA,GPIO_Pin_15) // PA15
#define LED4_OFF() GPIO_SetBits(GPIOA,GPIO_Pin_15) // PA15
#define LED4_TOGGLE() (GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_15))?(GPIO_ResetBits(GPIOA,GPIO_Pin_15)):(GPIO_SetBits(GPIOA,GPIO_Pin_15)) // PA15
#define LED3_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_3) // PB3
#define LED3_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_3) // PB3
#define LED3_TOGGLE() (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_3))?(GPIO_ResetBits(GPIOB,GPIO_Pin_3)):(GPIO_SetBits(GPIOB,GPIO_Pin_3)) // PB3
#define LED2_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_4) // PB4
#define LED2_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_4) // PB4
#define LED2_TOGGLE() (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_4))?(GPIO_ResetBits(GPIOB,GPIO_Pin_4)):(GPIO_SetBits(GPIOB,GPIO_Pin_4)) // PB4
#define LED1_ON() GPIO_ResetBits(GPIOB,GPIO_Pin_5) // PB5
#define LED1_OFF() GPIO_SetBits(GPIOB,GPIO_Pin_5) // PB5
#define LED1_TOGGLE() (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5))?(GPIO_ResetBits(GPIOB,GPIO_Pin_5)):(GPIO_SetBits(GPIOB,GPIO_Pin_5)) // PB5
整个顺序反了。
在按键的代码定义里:按键1、2也是不符
#define KEY1 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)//读取按键1
#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//读取按键2
#define KEY3 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)//读取按键3
#define KEY4 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)//读取按键4
#define KEY1_PRES 1 //KEY1
#define WKUP_PRES 2 //WK_UP
#define KEY3_PRES 3 //KEY3
#define KEY4_PRES 4 //KEY4
在代码里把按键和LED的相关代码全改了后,这个BLINK里的两个例程正常了。另外注意的是K1与K2\3\4是不一样的,要下拉。
|