资源简介
stm32f103和串口输出数据的US100模块进行工作,串口1显示距离值
代码片段和文件信息
/**********************************************************************************
* 文件名 :key.c
* 描述 :按键扫描(系统滴答时钟SysTick实现扫描延时)
* 实验平台:NiRen_TwoHeart系统板
* 硬件连接: PB1 -> KEY1
* PB2 -> KEY2
* 库版本 :ST_v3.5
**********************************************************************************/
#include “key.h“
#include “SysTick.h“
/*******************************************************************************
* 函数名 : Key_GPIO_Config
* 描述 : KEY IO配置
* 输入 : 无
* 输出 : 无
* 返回 : 无
* 说明 : KEY设置的引脚为:PA4-7
*******************************************************************************/
void Key_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义一个GPIO_InitTypeDef类型的GPIO初始化结构体
RCC_APB2PeriphClockCmd(KEY_RCC ENABLE); //使能GPIOA的外设时钟
GPIO_InitStructure.GPIO_Pin = KEY0 | KEY1 | KEY2 | KEY3; //选择要初始化的GPIOA引脚(PB1PB2)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置引脚工作模式为上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚输出最大速率为50MHz
GPIO_Init(KEY_PORT &GPIO_InitStructure); //调用库函数中的GPIO初始化函数,初始化GPIOA中的PB1PB2引脚
}
/*******************************************************************************
* 函数名 : Key_Detection
* 描述 : 按键按下检测
* 输入 : GPIOx:按键对应的GPIO,GPIO_Pin:对应按键端口
* 输出 : 无
* 返回 : KEY_DOWN(0):对应按键按下,KEY_UP(1):对应按键没按下
* 说明 : KEY设置的引脚为:PA4-7
*******************************************************************************/
u8 Key_Down_Detection(GPIO_TypeDef* GPIOx u16 GPIO_Pin)
{
if(GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_DOWN) //检测是否有按键按下
{
delay_ms(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设置的引脚为:PA4-7
*******************************************************************************/
u16 Key_Down_Scan(void)
{
u16 downflag = 0;
u16 value = 0;
downflag = GPIO_ReadInputData(KEY_PORT);
value = (~downflag) & (0x0001 << 4);
if((~downflag) & (0x0001 << 4)) //检测是否有按键按下
{
delay_ms(1); //延时消抖
downflag = GPIO_ReadInputData(KEY_PORT);
if((~downflag) & (0x0001 << 4)) //检测是否有按键按下
{
value = (~downflag) & (0x0001 << 4);
while((~GPIO_ReadInputData(KEY_PORT))& (0x0001 << 4));//等待按键抬起
}
}
else if((~downflag) & (0x0001 << 5)) //检测是否有按键按下
{
delay_ms(1); //延时消抖
downflag = GPIO_ReadInputData(KEY_PORT);
if((~downflag) & (0x0001 << 5)) //检测是否有按键按下
{
value = (~downflag) & (0x0001 << 5);
while((~GPIO_ReadInputData(KEY_PORT))& (0x0001 << 5));//等待按键抬起
}
}
else if((~downflag) & (0x0001 << 6)) //检测是
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-27 14:37 超声波US100\
目录 0 2017-12-27 14:37 超声波US100\BSP\
目录 0 2017-12-27 14:37 超声波US100\BSP\Key\
文件 3962 2017-06-11 22:37 超声波US100\BSP\Key\key.c
文件 513 2017-12-27 14:15 超声波US100\BSP\Key\key.h
目录 0 2017-12-27 14:37 超声波US100\BSP\LED\
文件 2678 2017-06-04 13:08 超声波US100\BSP\LED\Led.c
文件 1016 2017-06-04 01:50 超声波US100\BSP\LED\Led.h
目录 0 2017-12-27 21:54 超声波US100\BSP\SysTick\
文件 3040 2017-12-27 21:54 超声波US100\BSP\SysTick\SysTick.c
文件 163 2017-06-11 22:36 超声波US100\BSP\SysTick\SysTick.h
目录 0 2017-12-27 14:37 超声波US100\BSP\TIMER\
文件 1603 2013-09-28 11:23 超声波US100\BSP\TIMER\timer.c
文件 126 2013-09-28 11:23 超声波US100\BSP\TIMER\timer.h
目录 0 2017-12-27 20:00 超声波US100\BSP\USART\
文件 6898 2017-12-27 20:00 超声波US100\BSP\USART\usart.c
文件 591 2017-06-11 23:00 超声波US100\BSP\USART\usart.h
目录 0 2017-12-27 14:37 超声波US100\CMSIS\
文件 17273 2010-06-07 10:25 超声波US100\CMSIS\core_cm3.c
文件 85714 2011-02-09 14:59 超声波US100\CMSIS\core_cm3.h
目录 0 2017-12-27 14:37 超声波US100\CMSIS\startup\
目录 0 2017-12-27 14:37 超声波US100\CMSIS\startup\arm\
文件 15766 2011-03-10 10:52 超声波US100\CMSIS\startup\arm\startup_stm32f10x_cl.s
文件 15503 2011-03-10 10:52 超声波US100\CMSIS\startup\arm\startup_stm32f10x_hd.s
文件 15692 2011-03-10 10:52 超声波US100\CMSIS\startup\arm\startup_stm32f10x_hd_vl.s
文件 12376 2011-03-10 10:52 超声波US100\CMSIS\startup\arm\startup_stm32f10x_ld.s
文件 13656 2011-03-10 10:52 超声波US100\CMSIS\startup\arm\startup_stm32f10x_ld_vl.s
文件 12765 2011-03-10 10:52 超声波US100\CMSIS\startup\arm\startup_stm32f10x_md.s
文件 14073 2011-03-10 10:51 超声波US100\CMSIS\startup\arm\startup_stm32f10x_md_vl.s
文件 15955 2011-03-10 10:51 超声波US100\CMSIS\startup\arm\startup_stm32f10x_xl.s
文件 633933 2013-07-30 23:52 超声波US100\CMSIS\stm32f10x.h
............此处省略133个文件信息
相关资源
- STM32F103RCT6程序例
- 基于物联网的多功能电子药箱
- 通过STM32F407对BH1750光照度传感器采集
- STM32F系列IO控制WS2812B
- stm32-103c8x -定时器4路freq可变
- STM32F103中文教程及参考手册
- STM32F103C8T6每隔20s驱动DS18B20测温_OLED
- STM32 驱动SD卡 SPI协议
- 基于STM32的电子秤-HX711模块-OLED显示
- STM32F103C8T6 NRF24L01 无线收发程序
- 基于STM32的SPWM输出
- 基于STM32F103输出两相正弦波方波三角
- 基于stm32f103c8t6温湿度显示屏.rar
- stm32的foc库 2.0,全部未删减,内含用
- STM32F10x中文教程及参考手册
- libusb上位机和stm32下位机源代码
- fatfs__stm32例程
- mini_stm32开发板原理图及PCB图源文件
- 基于STM32和STM8的医疗电子方案
- stm32 +TF
- STM32F103C8T6 stm32CubeMx HAL程序
- STM32-SI4463
- STM32F103C8T6开发板原理图&源程序&资料
- FreeModbus+RT-Thead+STM32+Master主机V1.1
- 基于stm32的远程智能控制系统
- 基于 STM32 的 DS18B20 程序,包含 ID 访问
- STM32 CANopen从机
- 基于STM32F103的数控电源电路设计
- STM32的串行EEPROM读写例程,亲测能用
- 基于STM32和NRF24L01的无线温度监控系统
评论
共有 条评论