新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2016-5-31
- 在线时间
- 10 小时
|
代码:
//////////////////////**********key.h文件中***********////////////////
#ifndef _key_H
#define _key_H
#include "stm32f10x.h"
#include "delay.h"
#define KEY0 PCin(5)
#define KEY1 PAin(15)
#define WAKE_UP PAin(0)
u8 key_scan(void);
void key_init(void);
#endif
//////////////////////**********key.c文件中***********////////////////
#include "key.h"
static u8 temp=3;
void key_init(void)
{
RCC->APB2ENR|=1<<2; //使能PA、PC端口时钟,参考STM32中文参考手册96页
RCC->APB2ENR|=1<<4;
JTAG_Set(SWD_ENABLE); //关闭JTAG,开启SWD
GPIOC->CRL&=0xFF0FFFFF;//PC.5状态清零,参考STM32中文参考手册114页
GPIOC->CRL|=0x00800000;//KEY0-->PC.5端口配置,输入模式,上拉输入
GPIOA->ODR|=1<<5; //PC.5上拉,PA.0默认下拉
GPIOA->CRH&=0x0FFFFFFF;//PA.15状态清零
GPIOA->CRH|=0x80000000;//KEY1-->PA.15端口配置,输入模式,上拉输入
GPIOA->ODR|=1<<15; //PA.15上拉,PA.0默认下拉
GPIOA->CRL&=0xFFFFFFF0;//PA.0状态清零,参考STM32中文参考手册114页
GPIOA->CRL|=0x00000008;//WAKE_UP-->PA.0端口配置,输入模式,下拉输入
}
u8 key_scan(void)
{
while(KEY0==0)
{
delay_ms(5);
while(KEY0==0)
{
temp=0;
while(KEY0==0);
}
}
while(KEY1==0)
{
delay_ms(5);
while(KEY1==0)
{
temp=1;
while(KEY1==0);
}
}
while(WAKE_UP==1)
{
delay_ms(5);
while(WAKE_UP==1)
{
temp=2;
while(WAKE_UP==1);
}
}
return temp;
}
问题:为什么我没有按下KEY0的情况下,它初始值一直是低电平呢?(上拉应该是高电平的),以致程序一直在“ while(KEY0==0); ”中循环出不来
求高手、前辈指教,谢谢
|
-
|