STM32
直播中

周雯葭

7年用户 152经验值
私信 关注
[问答]

按键时钟设置问题如何解决

void KEY_Init(void){RCC->APB2ENR|=1<<2;     //使能PORTA时钟//RCC->APB2ENR|=1<<3;
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上拉//GPIOB->CRL&=0XFFFFFF0F;//PB1设置成输入  //GPIOB->CRL|=0X00000080;//GPIOB->ODR|=1<<1; } //按键处理函数//返回按键值//0,没有任何按键按下//1,KEY0按下//2,KEY1按下//3,KEY2按下 WK_UP//注意此函数有响应优先级,KEY0>KEY1>KEY2!!u8 KEY_Scan(void){ static u8 key_up=1;//按键按松开标志JTAG_Set(JTAG_SWD_DISABLE);if(key_up&&(KEY0==0||KEY1==0||KEY2==0)){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==0)//{//JTAG_Set(SWD_ENABLE);//return 3;//}}else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1;     JTAG_Set(SWD_ENABLE);return 0;// 无按键按下}
在这里,我想再利用PORTB.1做一个按键开关做KEY2,我已经在头文件中利用宏定义将 KEY2 定义为  KEY2 PBin(1),应该说设置是正确的
但当我把上式中注释的地方去除后,就不能正确的返回值,只有将它们注释后才能返回正确的结果,求教是我哪里设置错了???,是不是在这里不能连续开两个时钟??

回帖(1)

林剑连

2020-6-17 16:33:23
使用我们的板子还是自己的板子?
没威廉希尔官方网站 图,怎么帮你看。。。。
很容易导致:下笔千言,离题万里。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分