新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2018-8-7
- 在线时间
- 10 小时
|
5金钱
本帖最后由 omikeai 于 2020-6-27 10:39 编辑
#ifndef __KEY_H
#define __KEY_H
#include "stm32f10x.h"
#define KEYADDR (GPIOE_BASE+0X08)
#define PEin(n) *(unsigned long*)((KEYADDR & 0xF0000000)+0x02000000+((KEYADDR & 0x00FFFFFF)<<5)+(n<<2))
//PE4 KEY0
//PE3 KEY1
//PE2 KEY2
#define KEY0_GPIO_PIN GPIO_Pin_4
#define KEY0_GPIO_PORT GPIOE
#define KEY0_GPIO_CLK RCC_APB2Periph_GPIOE
#define KEY1_GPIO_PIN GPIO_Pin_3
#define KEY1_GPIO_PORT GPIOE
#define KEY1_GPIO_CLK RCC_APB2Periph_GPIOE
#define KEY2_GPIO_PIN GPIO_Pin_2
#define KEY2_GPIO_PORT GPIOE
#define KEY2_GPIO_CLK RCC_APB2Periph_GPIOE
#define KEYON 0
#define KEYOFF 1
#define KEY0 GPIO_ReadInputDataBit(KEY0_GPIO_PORT, KEY0_GPIO_PIN)
#define KEY1 GPIO_ReadInputDataBit(KEY1_GPIO_PORT, KEY1_GPIO_PIN)
#define KEY2 GPIO_ReadInputDataBit(KEY2_GPIO_PORT, KEY2_GPIO_PIN)
void Led_Gpio_Config(void);
void Key_Gpio_Init(void);
#endif
int main()
{
SysClkConfig(RCC_PLLMul_9);
Led_Gpio_Init();
Key_Gpio_Init();
while(1)
{
if( PEin(4) == KEYON)
{
delay(1000000);
while( PEin(4) == KEYON);
PEout(5) = OFF;
delay(5000000);
PEout(5) = ON;
delay(5000000);
}
}
}
按键的时候,用位带的方法无效,把PEin(4)改成读取的函数 KWY0就没问题
搞了几天没搞懂哪里出问题了
|
|