完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
0.前言
基于正点原子mini板的程序设计,完成按键控制LED的功能。 在STM32F103实验一:点亮LED灯的基础下(已经建立好led.h和led.c文件),添加头文件key.h和源文件key.c到HARDWARE文件夹下。 1.原理图参照: 3.程序开发思路: 编写头文件key.h,声明相关调用和函数 在key.c文件中编写按键初始化函数 在key.c中编写按键检测函数 在主函数main()中编写按键控制led的程序 3.1编写key.h文件 #ifndef __KEY_H_ #define __KEY_H_ #include “stm32f10x.h” #include “sys.h” //声明按键返回值 #define KEY_0 1 #define KEY_1 2 #define WK_UP 3 //声明按键引脚 #define key_0 PCin(5) #define key_1 PAin(15) #define wk_up PAin(0) void KEY_Init(void); u8 KEY_Scan(void); #endif 3.2编写key.c文件 #include “key.h” #include “delay.h” void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE); //WK_UP初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); //KEY_1初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); //KEY_0初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //上拉输入 GPIO_Init(GPIOC, &GPIO_InitStructure); } //按键扫描函数 u8 KEY_Scan() { if(wk_up){ delay_ms(10); if(wk_up){ while(wk_up); return WK_UP; } } if(!key_1){ delay_ms(10); if(!key_1){ while(!key_1); return KEY_1; } } if(!key_0){ delay_ms(10); if(!key_0){ while(!key_0); return KEY_0; } } return 0;//默认返回值 } 3.3编写主函数main() #include “stm32f10x.h” #include “led.h” #include “delay.h” #include “key.h” int main(void) { u8 key; LED_Init(); KEY_Init(); delay_init(); while(1){ key = KEY_Scan(); switch(key){ case KEY_0: LED0=!LED0 ; break; case KEY_1: LED1=!LED1 ; break; case WK_UP: LED1=!LED1, LED0=!LED0; break; } } } 3.4效果 按下KEY_0键后,LED0的状态反转,按下KEY_1键后,LED1的状态反转,按下WK_UP后,LED0和LED1的状态都反转。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1864浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 17:18 , Processed in 0.924299 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号