• 大小: 2.55MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-15
  • 语言: 其他
  • 标签:

资源简介

基于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个文件信息

评论

共有 条评论