资源简介
基于GPRS的远程家电控制系统的源码,代码合理,注解规范清晰,可直接用Keil打开生成文件进行测试和二次开发。
代码片段和文件信息
/**********************************************************************************
* 文件名 :key.c
* 描述 :按键扫描(系统滴答时钟SysTick实现扫描延时)
* 硬件连接: PA0 -> KEYUP
* PE1 -> KEY1
* PE3 -> KEY2
* PE4 -> KEY3
**********************************************************************************/
#include “key.h“
#include “SysTick.h“
/*******************************************************************************
* 函数名 : Key_GPIO_Config
* 描述 : KEY IO配置
* 输入 : 无
* 输出 : 无
* 返回 : 无
* 说明 : KEY(1~3)的IO口分别是:PE2PE3PE4
*******************************************************************************/
void Key_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义一个GPIO_InitTypeDef类型的GPIO初始化结构体
RCC_APB2PeriphClockCmd(KEY_RCC | KEY_RCC_UP ENABLE); //使能GPIOA的外设时钟
GPIO_InitStructure.GPIO_Pin = KEY1 | KEY2 | KEY3; //选择要初始化的GPIOE引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置引脚工作模式为上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚输出最大速率为50MHz
GPIO_Init(KEY_PORT &GPIO_InitStructure); //调用库函数中的GPIO初始化函数,初始化GPIOA中的PE2PE3PE4引脚
GPIO_InitStructure.GPIO_Pin = KEYUP; //选择要初始化的GPIOA引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置引脚工作模式为下拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚输出最大速率为50MHz
GPIO_Init(KEY_PORT_UP &GPIO_InitStructure); //调用库函数中的GPIO初始化函数,初始化GPIOA中的PA0引脚
GPIO_ResetBits(GPIOAKEYUP); //KEY_UP输出低电平
}
/*******************************************************************************
* 函数名 : Key_Detection
* 描述 : 按键按下检测
* 输入 : GPIOx:按键对应的GPIO,GPIO_Pin:对应按键端口
* 输出 : 无
* 返回 : KEY_DOWN(0):对应按键按下,KEY_UP(1):对应按键没按下
* 说明 : KEY(1~3)的IO口分别是:PE2PE3PE4
*******************************************************************************/
u8 Key_Down_Detection(GPIO_TypeDef* GPIOx u16 GPIO_Pin)
{
if(GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_DOWN) //检测是否有按键按下
{
Delay_nMs(10); //延时消抖
if(GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_DOWN) //检测是否有按键按下
{
while(GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_DOWN); //等待按键释放
return KEY_DOWN;
}
else
{
return KEY_UP;
}
}
else
{
return KEY_UP;
}
}
/*******************************************************************************
* 函数名 : Key_Down_Scan
* 描述 : 按键按下扫描
* 输入 : 无
* 输出 : 0:没有按键按下,1:按键按下
* 返回 : 无
* 说明 : KEY(1~2)的IO口分别是:PC10PC11
*******************************************************************************/
u8 Key_Down_Scan(void)
{
u16 downflag=0;
u8 value=0;
downflag=GPIO_ReadInputData(KEY_PORT);
if((downflag & 0x0c00) != 0x0c00) //检测是否有按键按下
{
Delay_nMs(10); //延时消抖
downflag = GPIO_ReadInputData(KEY_PORT) & 0x0c00;
if(downflag != 0x0c00 ) //检测是否有按键按下
{
if((downflag & 0x0400) == 0) value |= 0x01;
if((downflag & 0x0800) == 0) value |= 0x02;
}
}
return value;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\BSP\
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\BSP\Key\
文件 3321 2017-06-30 15:00 基于STM32的远程家电控制系统源码\BSP\Key\key.c
文件 724 2017-06-30 15:00 基于STM32的远程家电控制系统源码\BSP\Key\key.h
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\BSP\LED\
文件 2802 2017-06-30 14:57 基于STM32的远程家电控制系统源码\BSP\LED\Led.c
文件 1023 2017-06-22 15:43 基于STM32的远程家电控制系统源码\BSP\LED\Led.h
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\BSP\SysTick\
文件 2467 2017-06-30 14:59 基于STM32的远程家电控制系统源码\BSP\SysTick\SysTick.c
文件 164 2013-07-31 20:13 基于STM32的远程家电控制系统源码\BSP\SysTick\SysTick.h
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\BSP\TIMER\
文件 1603 2013-09-28 11:23 基于STM32的远程家电控制系统源码\BSP\TIMER\timer.c
文件 126 2013-09-28 11:23 基于STM32的远程家电控制系统源码\BSP\TIMER\timer.h
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\BSP\USART\
文件 7302 2017-06-30 14:58 基于STM32的远程家电控制系统源码\BSP\USART\usart.c
文件 689 2017-06-20 15:34 基于STM32的远程家电控制系统源码\BSP\USART\usart.h
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\CMSIS\
文件 17273 2010-06-07 10:25 基于STM32的远程家电控制系统源码\CMSIS\core_cm3.c
文件 85714 2011-02-09 14:59 基于STM32的远程家电控制系统源码\CMSIS\core_cm3.h
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\CMSIS\startup\
目录 0 2017-09-30 15:48 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\
文件 15766 2011-03-10 10:52 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_cl.s
文件 15503 2011-03-10 10:52 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_hd.s
文件 15692 2011-03-10 10:52 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_hd_vl.s
文件 12376 2011-03-10 10:52 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_ld.s
文件 13656 2011-03-10 10:52 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_ld_vl.s
文件 12765 2011-03-10 10:52 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_md.s
文件 14073 2011-03-10 10:51 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_md_vl.s
文件 15955 2011-03-10 10:51 基于STM32的远程家电控制系统源码\CMSIS\startup\arm\startup_stm32f10x_xl.s
文件 633933 2013-07-30 23:52 基于STM32的远程家电控制系统源码\CMSIS\stm32f10x.h
............此处省略130个文件信息
评论
共有 条评论