OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6929|回复: 1

位带操作输入无效,求大神解答

[复制链接]

4

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-8-7
在线时间
10 小时
发表于 2020-6-27 09:15:42 | 显示全部楼层 |阅读模式
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就没问题


搞了几天没搞懂哪里出问题了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-8-25
在线时间
2 小时
发表于 2023-1-3 22:25:10 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表