完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
**
要求:当按键按下的时候,对LED的状态进行取反 装备:电脑,MDK5,STM32F103ZET6开发板,USB线 ** ** 首先自己配置一个工程模板,如下所示** 第二步:电路图 第三步:写代码 主函数: #include "stm32f10x.h" #include "led.h" #include "delay.h" #include "key.h" #include "sys.h" int main(void) { delay_init(); //延时函数初始化 Led_Init(); //LED初始化 key_init(); //按键初始化 while(1) { key1(); }//判断按键是否按下,按键按下所执行的程序 按键函数: #include "key.h" #include "delay.h" #include "led.h" void key_init(void) { GPIO_InitTypeDef GPIO_InitStructure;//定义一个GPIO的结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//开启GPIOE使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//使用GPIOE.2引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置GPIOE的工作模式为带上拉输入 GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE寄存器 }//按键初始化函数 void key1(void) { if(KEY1==0)//判断按键是否按下,如果按下则满足KEY1==0,否则继续判断按键是否按下 { delay_ms(500);//按键消抖程序和防止按键是误触的 if(KEY1==0)//再次判断按键是否按下 { LED1=!LED1;//如果按下则执行按键取反(利用逻辑取反) } } }//按键按下所执行程序 LED初始化: #include "led.h" #include "stm32f10x.h" void Led_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;//定义一个GPIO的结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//打开GPIOC的时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//设置GPIOC的端口,使用GPIOC.1 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置工作速度为50MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//普通推挽输出模式 GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC寄存器 }//LED初始化函数 按键头文件: #ifndef _key_ #define _key_ #include "sys.h" #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//宏定义GPIOE.2 void key_init(void); void key1(void); #endif LED头文件: #ifndef _led_ #define _led_ #include "sys.h" void Led_Init(void); #define LED1 PCout(1)// LED1等价GPIOC.0 #endif 发现缺少一个延时函数,自己写喽。可以使定时器写,也可以是简单的一个计数器。这里就不多介绍。 第四步:结果 按键的时间得按久一些否则会有问题,主要还是消抖的问题。长按500ms就会出现取反,如果太快就会发现一些很神奇的现象,感觉会自闭的。 最后小小的总结一下: 利用库函数写一个简单的程序也许体会不到他的便捷性,但是慢慢地你就会发现他真的好用。不要放弃学习。emmmmm…大概就这样了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1678 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1580 浏览 1 评论
1012 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1626 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
674浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
537浏览 3评论
556浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
525浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 11:36 , Processed in 0.824182 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号