我在这里白痴了很久,白痴停顿点如下:
1.U8 Key_Scan(void)
{
static u8 key_up=1;
JTAG_Set(JTAG_SWD_DISABLE);//这边已经将SWD(Jlink)关闭了,导致无法继续调试
if(Key_up&(KEY0=0||KEY1=0||KEY2=1))
{
delay_ms(10);
Key_up=0;
if(KEY0=0)
{
JTAG_Set(SWD_ENABLE);
return 1;
}else if (KEY1=0)
{
JTAG_Set(SWD_ENABLE);
return 2;
}else if (KEY2=1)
{
JTAG_Set(SWD_ENABLE);
return 3;
}else if(KEY0=1&KEY1=0&KEY=0)
Key_up=1;
JTAG_Set(SWD_ENABLE);
Return 0
}
2.#define KEY0 PAin(13) //PA13
#define KEY1 PAin(15) //PA15
#define KEY2 PAin(0) //PA0 WK_UP
要学会PAin(n)的使用
3.void KEY_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入
GPIOA->CRL|=0X00000008;
GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入
GPIOA->CRH|=0X80800000;
GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉
GPIOA->ODR|=1<<15; //PA15上拉
}
要习惯使用寄存器来对GPIO进行配置,而不是使用库函数对GPIO进行配置