STM32 按键输入

  

#include "stm32f10x.h"
#include "key.h"

//按键初始化函数
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

#ifndef __KEY_H
#define __KEY_H     

#define KEY0  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)//读取按键0
#define KEY1  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)//读取按键1
#define KEY2  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)//读取按键2
#define KEY3  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)//读取按键3

#define KEY4  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)//读取按键0
#define KEY5  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)//读取按键1
#define KEY6  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)//读取按键2
#define KEY7  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)//读取按键3
#define KEY8  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)//读取按键3

void KEY_Init(void);//IO初始化

#endif
#include "stm32f10x.h"
#include <stdio.h>
#include "sys.h"
#include "delay.h"
#include "oled.h"
#include "24l01.h"
#include "key.h"

/* OLED
SCL-D0--PC15
SDA-D1--PC14
RST---PC13
DC---PB4*/

/*
        2401--SPI1
        MISO-PA6 SCK-PA5     CE-PB3
        IRQ-PA3  MOSI-PA7 CSN-PA2
*/

// c8t6

 u8 tmp_buf[1] ;

int main(void)
{
    Stm32_Clock_Init(9);//系统时钟设置为外部晶振,9倍频
    delay_init(72);//系统SysTick初始化
    JTAG_Set(JTAG_SWD_DISABLE);     //=====关闭JTAG接口
    JTAG_Set(SWD_ENABLE);           //=====打开SWD接口 可以利用主板的SWD接口调试
  OLED_Init();
    KEY_Init();
    //NRF24L01_Init();                //=====NRF24L01无线模块初始化
 // NRF24L01_FindMyself();          //=====NRF24L01无线模块检查 检测不到就停在这边自检闪灯
     //tmp_buf[0]= 1 ;
    while (1)
    { 

              // TX_Mode(); 

                 //     OLED_ShowNumber(0,30,tmp_buf[0],5,12);
               //    NRF24L01_TxPacket(tmp_buf);    

     if(KEY0 == 0)
         {
             delay_ms(10);
             OLED_ShowString(0,20,"Key0");

         }
         if(KEY1 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key1");
         }
         if(KEY2 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key2");
         }
         if(KEY3 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key3");
         }     

          if(KEY4 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key4");
         }     

          if(KEY5 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key5");
         }     

       if(KEY6 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key6");
         }     

          if(KEY7 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key7");
         }     

          if(KEY8 == 0)
         {
              delay_ms(10);
              OLED_ShowString(0,20,"Key8");
         }     

         OLED_Refresh_Gram();
  }

    }
时间: 2024-10-12 15:53:39

STM32 按键输入的相关文章

STM32基本GPIO操作:按键输入(扫描+外部中断)

(涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注意C语言中变量声明需放在函数开头) 以下是初始化PB5端口(LED灯)的代码,每一条语句的含义在我另一篇博客里 GPIO_InitTypeDef GPIO_Init1; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_Init1.

STM32之输入捕获以及小小应用(库)

五一之际,先祝大家五一快乐.其实快乐很简单,工作的人有假放,学习的人也有假放,像我,有假放才有更多的时间学自己想学的东西.51假期学51,可惜没有32假期呀.好了..言归正传,大家听过吸星大法吧..在这里.智商和情商比我高的人估计又知道我要说什么了..没错了..今天我们来了解"葵花宝典"第STM32篇之输入捕获,也就是上文所讲的"吸星大法", 那输入捕获可以用来干嘛呢??这个问题问的好,输入捕获可以用来测量脉冲宽度或者测量频率,假如要捕获一个脉冲的高电平脉宽,我们要

[stm32] 按键

防抖时间设的不是太好.... 1 /* 2 ::按键控制 3 PA8接LED,PE2接按键 4 */ 5 #include"stm32f10x.h" 6 void RCC_Configuration(void); 7 void GPIO_Config(void); 8 void Delay(__IO uint32_t nCount); 9 10 int main() 11 { 12 RCC_Configuration(); //系统时钟配置|使能GPIO口 13 GPIO_Config

linux输入子系统(input subsystem)之按键输入和LED控制

实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c 1 #include <linux/module.h> 2 #include <linux/version.h> 3 4 #include <linux/init.h> 5 #include <linux/fs.h> 6 #include <linux/interrupt.h> 7 #include <linux/irq.h&g

stm32按键识别

刚写了一个关于stm32单片机的按键识别的程序.目的,同时识别多个按键,并且不浪费cpu的时间. 关于去抖动,以前以为是在按键的时候,手会抖动.通过程序验证,这个确实是误解.这个应该是防止意外干扰.以我的手按键的速度,单次持续时间小于0.2秒钟. 前提:引脚低电平为按键按下.为每个按键设置3个变量,分别是识别过程的计数器keycnt.识别的结果keystat.可以判定的结果keymod(比如按下.释放.单击.双击.长按等). 本例 只有单击一种判断,keymod暂时不用.另外考虑,按键判定后,直

input之按键输入

通过直接操作驱动来监控键盘,只要程序一旦在后台启动,无论在任何页面都可以监控到按键的数值. 步骤如下: 1.找到键盘挂在点:有两种方法 方法一:在   /dev/input路径下通过  cat even..(1,2,3,4..)打印操作,并按下键盘看哪个出现的不是回写(乱码状态),就是键盘挂载点,我的是event1;鼠标是event2: 方法二:在命令行中输入  cat /proc/bus/input/devices 查看设备对应的结点(文件) 2.打开键盘文件: #define   DEV "

2-MSP430按键输入检测

为了写一篇文章做铺垫--提醒着自己,,,,,, P1.0的电平,随着P1.1引脚输入的电平变化而变化 #include "io430.h" void delay(void) { unsigned char a,b,c; for(c=167;c>0;c--) for(b=171;b>0;b--) for(a=1;a>0;a--); } void main( void ) { WDTCTL = WDTPW + WDTHOLD;//看门狗默认是打开的,不使用就关了它 P1D

输入法切换小程序(js模拟键盘按键输入成功版)

花了半天时间写了个小程序,基本满足最初需求(但目前只支持IE浏览器). 需求: 在输入汉字的时候没有切换出中文输入法而导致输入了拼音,我们要做的是:将输入的拼音删除并且切换出中文输入法,重新自动在输入法中打出相应的字母. 我的电脑上默认只有两个输入法,中文输入法和美式键盘,所以模拟出”ctrl+空格键“即可在两个输入法之间进行切换. 做的过程和想法: 最初想的是使用网页配合js来做,毕竟界面好做一些.首先想到的就是用js来模拟键盘的输入,想法很好,但是却很难,主要是因为浏览器为了考虑安全性,所以

adb(7)-模拟按键/输入

在 adb shell 里有个很实用的命令叫 input,通过它可以做一些有趣的事情. input 命令的完整 help 信息如下: Usage: input [] [...] The sources are: mouse keyboard joystick touchnavigation touchpad trackball stylus dpad gesture touchscreen gamepad The commands and default sources are: text (D