打印

有关按键的问题,对应于14节位带操作

[复制链接]
284|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冰糖炖雪梨|  楼主 | 2020-4-23 18:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pi, IO, GPIO, gp, LED
我按照视频教程把代码写进去但是 按key1键的时候灯会亮灭,按key2键时候灯没反应,再按key1键时,就没反应了。源代码我给附上,跪求大佬解惑(补充:原文件时例程的 13-GPIO输入-按键检测)
**
  ******************************************************************************
  * @file    main.c
  * @author  fire
  * @version V1.0
  * @date    2013-xx-xx
  * @brief   测试按键
  ******************************************************************************
  * @attention
  *
  * 实验平台:野火 F103-指南者 STM32 开发板
  * 论坛    :http://www.firebbs.cn
  * 淘宝    :https://fire-stm32.taobao.com
  *
  ******************************************************************************
  */

#include "stm32f10x.h"
#include "bsp_led.h"  
#include "bsp_key.h"

/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
        
        
        #define GPIOB_ODR_Addr  GPIOB_BASE+0x0C
        #define Pbout(n) *(unsigned int*)((GPIOB_ODR_Addr & 0xF0000000)+0x02000000+((GPIOB_ODR_Addr & 0x00FFFFFF)<<5)+(n<<2))
        #define GPIOA_IDR_Addr  GPIOA_BASE+0x08
        #define Pain(n) *(unsigned int*)((GPIOA_IDR_Addr & 0xF0000000)+0x02000000+((GPIOA_IDR_Addr & 0x00FFFFFF)<<5)+(n<<2))
        #define GPIOC_IDR_Addr  GPIOC_BASE+0x08
        #define Pcin(n) *(unsigned int*)((GPIOC_IDR_Addr & 0xF0000000)+0x02000000+((GPIOC_IDR_Addr & 0x00FFFFFF)<<5)+(n<<2))
        
        
        void delay(uint32_t count)
        {
                for(;count>0;count--);
        }
        
int main(void)
{        
        /* LED端口初始化 */
        LED_GPIO_Config();
        //LED1_ON;

        /* 按键端口初始化 */
        Key_GPIO_Config();
        
#if 0
        while(1)
{         
        //GPIO_SetBits(LED3_GPIO_PORT ,LED3_GPIO_PIN  );
          Pbout(1) = 1;
         delay(0xFFFFF);
        //GPIO_ResetBits( LED3_GPIO_PORT , LED3_GPIO_PIN  );
          Pbout(1) = 0;
         delay(0xFFFFF);
}
        /* 轮询按键状态,若按键按下则反转LED */
#else
while(1)                           
        {           
                if( Pain(0) == KEY_ON  )
                {
                        while( Pain(0) == KEY_ON);
                        /*LED1反转*/
                        LED2_TOGGLE;
                }
                if( Pcin(13) == KEY_ON  )
                {
                        while( Pain(13) == KEY_ON);
                        /*LED1反转*/
                        LED2_TOGGLE;
                }
//                if( Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == KEY_ON  )
//                {
//                        /*LED2反转*/
//                        LED2_TOGGLE;
//                }               
        }
#endif
}
/*********************************************END OF FILE**********************/

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

430

主题

436

帖子

0

粉丝