249018563 发表于 2017-7-6 17:08:18

圆梦那年4(c语言 按键)

本帖最后由 249018563 于 2017-7-14 16:36 编辑

先发帖,晚上码字。。。。
主程序
test.c
------------------------------------------------------------------------------------------------------
#include "sys.h"
#include "usart.h"               
#include "delay.h"       
#include "led.h"
#include "key.h"
/*********************************************************

File:KEY应用

Description: BalanceSTM32 V2.0 KEY控制LED灯点亮和熄灭
**********************************************************/                        
int main(void)
{               
u8 t;
        Stm32_Clock_Init(9); //系统时钟设置 外部8m晶振
        delay_init(72);             //延时初始化9倍频到72m
        LED_Init();                             //初始化与LED连接的硬件接口 pc13推挽输出
        KEY_Init();          //IO初始化
        while(1)
        {
                t=KEY_Scan();//得到键值 ,按下为1 松开为0
                   if(t)
                {                                                  
                        switch(t)
                        {                               
                                case 1:
                                        LED = !LED;
                                        break;                               
                        }
                }
                else delay_ms(10);
        }       
}
-----------------------------------------------------------------------
include "key.h"
#include "delay.h"
/*********************************************************
Copyright (C), 2016-2026, YFRobot.
www.yfrobot.com
File:KEY驱动代码
Author:pinggai    Version:1.0   Data:2016/09/08
Description: Balance-STM32 V2.0 KEY驱动代码
Others:使用端口 PB2
      使用硬件资源 PB2
**********************************************************/       

/******************************************************
Function:   void KEY_Init(void)
Description:按键端口初始化,PB2 设置成输入 高电平有效
******************************************************/
void KEY_Init(void)
{
        RCC->APB2ENR|=1<<3;      //使能PORTB时钟
        GPIOB->CRL&=0XFFFFF0FF;//PB2设置成输入          
        GPIOB->CRL|=0X00000800;// 0x4模拟输入、0x3推挽输出(00 11,00指推挽输出,11指输出模式 50mhz)
                                //0x8 上拉或下拉输入,0xb复用输出   
//GPIOA->ODR&=~(1<<2);      //默认下拉
}
------------------------------------------------------------------------
子程序:key.c
/******************************************************
Function:   u8 KEY_Scan(void)
Description:按键处理函数
Return: 0,没有任何按键按下
      1,KEY按下
******************************************************/
u8 KEY_Scan(void)
{       
        static u8 key_up=1;//按键按松开标志       
        if(key_up&&KEY==1) // 按键按下
        {
                delay_ms(10);//去抖动
                key_up=0;
                if(KEY==1) //pb2 == 1
                {
                        return 1;
                }
        }
        else if(KEY==0)key_up=1;           //pb2 ==0
        return 0;// 无按键按下
}
--------------------------------------------------------------------------------------
等主板来了 开始 接硬件了

百度网盘地址http://pan.baidu.com/s/1c1WifoW
页: [1]
查看完整版本: 圆梦那年4(c语言 按键)