4、按键控制LED

1、GPIO初始化中增加按键时钟初始化使能

2、GPIO初始化中增加按键引脚配置

3、查看引脚状态函数:GPIO_ReadInputDataBit

4、例程代码

 1 /*************************************************************************************************************************************
 2 *
 3 *  文件名称:main.c
 4 *  文件功能:主函数文件
 5 *
 6 ***************************************************************************************************************************************/
 7
 8 #include"pbdata.h"//调用自定义公共函数库
 9
10
11 /*********************************************************************************
12 *
13 * 初始化操作
14 *
15 *********************************************************************************/
16 void RCC_Configuration(void);//系统时钟初始化函数声明
17 void GPIO_Configuration(void);//GPIO初始化函数声明
18
19
20
21
22 /********************************************************************************
23 *
24 *  函数名称:main(void)
25 *  函数功能:主函数
26 *  函数说明:不能用void定义主函数
27 *
28 ********************************************************************************/
29 int main(void)//void不能void定义主函数
30 {
31     RCC_Configuration();    //系统时钟初始化
32
33     GPIO_Configuration();//端口初始化
34
35
36 /*进入GPIO处理*/
37   while(1)
38   {
39         if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==0)
40             GPIO_ResetBits(GPIOB,GPIO_Pin_5);//指定端口设置低电平,led熄灭
41         else
42             GPIO_SetBits(GPIOB,GPIO_Pin_5);//指定端口设置为高电平,led发光
43   }
44
45 }
46
47
48
49
50 /********************************************************************************
51 *
52 *  函数名称:RCC_Configuration(void)
53 *  函数功能:系统时钟高初始化函数
54 *
55 ********************************************************************************/
56     void RCC_Configuration(void)//系统时钟高初始化函数
57   {
58
59     SystemInit();//系统初始化
60     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//对应GPIO时钟使能
61         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//对应GPIO时钟使能
62     }
63
64
65
66 /*******************************************************************************
67 *
68 * 函数名称:GPIO_Configuration(void)
69 * 函数功能:GPIO初始化函数
70 *
71 ********************************************************************************/
72
73     void GPIO_Configuration(void)//GPIO初始化函数
74   {
75     GPIO_InitTypeDef GPIO_InitStructure;//定义一个GPIO设置的结构体变量
76
77 /*对LED引脚初始化*/
78         /*结构体变量赋值*/
79       GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;////引脚配置
80       GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//配置频率
81       GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
82          /*对应的GPIO初始化*/
83       GPIO_Init(GPIOB,&GPIO_InitStructure);
84
85 /*对key的引脚初始化*/
86         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;////引脚配置
87       GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入
88          /*对应的GPIO初始化*/
89       GPIO_Init(GPIOC,&GPIO_InitStructure);
90
91   }
92
93
94
95
96
97
98     

 1 /****************************************************************************************************************
 2 *
 3 * 文件名称:pbdata.c
 4 * 文件功能:自定义函数或者全局变量的初始化
 5 *
 6 ****************************************************************************************************************/
 7
 8 /*头文件声明*/
 9 #include"pbdata.h"
10
11
12 /********************************************************************************************
13 *
14 * 自定义全局变量
15 *
16 ********************************************************************************************/
17 u8 dt=0;
18
19
20
21
22
23 /******************************************************************************************
24 *
25 * 自定义函数
26 *
27 ******************************************************************************************/
28
29
30
31 /**************************************************
32 *
33 *  函数名称:delay_us(u32 nus)
34 *  函数功能:微秒延时函数
35 *  输入参数:输入值为延时us
36 *
37 ***************************************************/
38 void delay_us(u32 nus)
39 {
40     u32 temp;
41     SysTick->LOAD = 9*nus;//载入初值,72M/8=9M,也就是1/9us,9*1/9us,所以是执行9次
42     SysTick->VAL=0X00;//清空计数器,清空后,就自动设置自己设定的计数器的值
43     SysTick->CTRL=0X01;//使能,减到零动作(不发生中断),采用外部时钟
44
45     do
46     {
47           temp=SysTick->CTRL;//标志位,等到一直减到0
48          }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
49
50     SysTick->CTRL=0x00; //关闭计数器
51     SysTick->VAL =0X00; //清空计数器
52 }
53
54
55
56
57
58
59
60 /***************************************************
61 *
62 * 函数名称:delay_ms(u16 nms)
63 * 函数功能:毫秒级延时
64 * 输入参数:输入值位延时ms
65 *
66 ****************************************************/
67 void delay_ms(u16 nms)
68 {
69     u32 temp;
70     SysTick->LOAD = 9000*nms;//载入初值,72M/8=9M,也就是1/9us,9*1/9us,所以是执行9000次
71     SysTick->VAL=0X00;//清空计数器,清空后,就自动设置自己设定的计数器的值
72     SysTick->CTRL=0X01;//使能,减到零动作(不发生中断),采用外部时钟
73
74     do
75     {
76           temp=SysTick->CTRL;//标志位,等到一直减到0
77          }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
78
79     SysTick->CTRL=0x00; //关闭计数器
80     SysTick->VAL =0X00; //清空计数器
81 }

 1 /*pbdata.h*/
 2 /***************************************************************************************************
 3 *
 4 * 文件名称:pbdata.h
 5 * 文件功能:自定义的函数和全局变量的声明头文件
 6 *
 7 ***************************************************************************************************/
 8
 9 #ifndef _pbdata_H
10 #define _pbdata_H
11
12 #include"stm32f10x.h"
13
14
15
16 /********************************************************************
17 *
18 *  自定义全局变量声明
19 *
20 ********************************************************************/
21 extern u8 dt;
22
23
24
25
26
27 /********************************************************************
28 *
29 *  自定义全函数声明
30 *
31 ********************************************************************/
32 void delay(u32 nCount);
33 void delay_us(u32 nus);
34 void delay_ms(u16 nms);
35
36
37
38
39 #endif

5、工程下载:

http://download.csdn.net/detail/a1181803348/8737843

时间: 2024-10-07 05:16:31

4、按键控制LED的相关文章

中断——按键控制LED状态

程序功能:按键控制LED状态,中断实现. 现象描述:当按下k键时,LED0总会闪烁,从而影响其他LED. 注意:用杜邦线把P3.2引脚(INT0)与开关K引脚相连. 程序: ORG 0000H LJMP MAIN ORG 0003H ;外部中断0入口 LJMP INT0 ORG 0200H MAIN:SETB EA ;开启总中断 SETB EX0 ;开启外部中断 0,即P3.2引脚 CLR IT0 ;设置成 低电平触发方式 SJMP $ ;主程序只等待中断 INT0:DEC P1 ;外部中断 0

外部按键 控制 LED 中断 (参考 http://www.oschina.net/question/565065_115196?sort=time )

转帖: http://www.oschina.net/question/565065_115196?sort=time 实验目的: mini2440开发板上有6个按键,将其中的前4个按键设为外部中断方式,当按下K1时,LED1亮:当按下K2时,LED2亮:当按下K3时,LED3亮:当按下K4时,LED4亮. 首先我们先了解一下 mini2440 按键和LED接口:     GPBCON 地址: 0x56000010 (LED 灯可以参考流水灯的随笔) 按键接口电路如图2所示,当按键没有按下时,G

CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. 程序代码 THE END 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 由上图可知,Zigbee模块的SW1按钮连接在P1.2端口上,当SW1导通,P1.2电平从3.3V被拉低接地.所以P1.2输入模式为下拉输入. 1.2 CC2530相关寄存器 寄存器名称 寄存器作用 寄存器描述 P

基于Arduino的按键控制LED实验

I/O 口的意思即为INPUT 接口和OUTPUT 接口,到目前为止我们设计的小灯实验都还只是应用到Arduino 的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED 小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O 的作用.按键开关大家都应该比较了解,属于开关量(数字量)元件,按下时为闭合(导通)状态.完成本实验要 用到的元件如下: 按键开关*1 红色M5 直插LED*1 220Ω电阻*1 10K

四、按键控制LED灯亮灭

材料: 1.SAGOO UNO 1块: 2.按键模块 1块: 3.杜邦线若干. 步骤: 1.按照下图连接按键模块和UNO: SAGOO UNO引脚                                      按键模块引脚 3V3  <------------------------------------>    V(电源) GND <------------------------------------>    G(电源) Pin2  <----------

CC2530 按键控制LED

原理图分析 当按键没有按下的时候是高电平:按下的时候VCC通过10K的限流电阻接地是低电平.要知道引脚的状态,需要把引脚配置为输入模式,然后读取引脚的状态即可. 寄存器分析 P0SEL配置为输入/输出模式(0为IO模式,1为外设模式). P0DIR 配置引脚为输入模式(0为输入,1为输出) P0INP配置为上拉或者下拉模式(0为上拉或下拉模式,1为三态模式) P2INP的高三位决定整个P0,P1,P2端口是上拉还是下拉. 编写测试 #include <ioCC2530.h> void main

tq2440裸机程序. 按键控制LED灯.

http://blog.csdn.net/w_ww_w/article/details/8211538 http://blog.csdn.net/shengnan_wu/article/details/8168795

[ZigBee] 3、ZigBee基础实验——GPIO输出控制实验-控制Led亮灭

1.CC2530的IO口概述 CC2530芯片有21 个数字输入/输出引脚,可以配置为通用数字I/O 或外设I/O 信号,配置为连接到ADC.定时器或USART外设.这些I/O 口的用途可以通过一系列寄存器配置,由用户软件加以实现. I/O 端口具备如下重要特性:    ?? 21 个数字I/O 引脚 ?? 可以配置为通用I/O 或外部设备I/O ?? 输入口具备上拉或下拉能力 ?? 具有外部中断能力. 21 个I/O 引脚都可以用作于外部中断源输入口.因此如果需要外部设备可以产生中断.外部中断

MSP430F149学习之路——按键与LED

代码 1 /*********************************** 2 程序功能:用按键控制LED状态 3 缺点:按键按下后无法改变LED灯的状态,可以利用板上的复位键^~^ 4 *************************************/ 5 #include <msp430x14x.h> 6 7 int k,i=0; 8 void int_clk(); 9 void led(int n); 10 void main() 11 { 12 WDTCTL = WD