STM32CubeMX+Keil5+Proteus实现按键控制LED灯(入门篇) |
您所在的位置:网站首页 › 台灯实验报告怎么写 › STM32CubeMX+Keil5+Proteus实现按键控制LED灯(入门篇) |
嵌入式HAL库实战项目
本文说明STM32CubeMX安装和使用Keil实现按键控制LED亮灭Proteus仿真(补)Proteus连线问题总结
本文说明
学生党,之前学习过嵌入式的课程,跟着正点原子的视频一步一步地构建项目的工程,主要是基于标准库的开发,整个过程实在是过于繁琐。想必有的同学也应深有体会。 最近准备开始嵌入式相关的工作,打算使用HAL库进行开发,所以看了许多视频和教程做一个项目,本文主要做一个学习总结。 STM32CubeMX安装和使用官网安装链接 选择适应自己的系统即可 选择所需的芯片包,安装即可。
完事之后我们就可以新建我们的工程了
这里我想要实现的效果是用一个按键输入控制两个LED灯的亮灭,所以我们就需要一个GPIO输入和两个GPIO输出 这里我选择PA1,PA2位输出引脚,PB0为按键输入引脚,操作方法是点击芯片上PA1(以PA1的设置为例),选择GPIO_Output即可
依次配置每个端口,包括 GPIO output level(初始化输出电平) GPIO mode(模式) GPIO Pull-up/Pull-down(上下拉) Maximum output speed (输出响应速度) User Label(用户标签): 标记这个引脚是做什么用的,便于用户理解 这里我们设置初始化两个输出电平为低电平,即灯亮,每个配置项内容如上图所示 设置按键输入为上拉,如上图所示。 接下来我们设置一下时钟,HSE(高速外部时钟)这一项选择如下图所示
选择Project Manager,设置项目名,项目地址,选择IDE和对应的版本,这里我们选择MDK-ARM,V5
u1s1,STM32CubeMX很是方便,不用麻烦地构建工程,不用导入各种文件,不用自己写代码设置引脚和GPIO模式等等,用图形工具就帮我们生成IDE就绪项目,接下来我们只要在Keil里面写入我们的逻辑即可 Keil实现按键控制LED亮灭打开Keil工程,找到main.c文件,在Private user code内写入按键扫描函数 //按键扫描函数 uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin) { /*检测是否有按键按下,按键按下为低电平,即RESET */ if (HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == RESET ) { /*等待按键释放 */ while (HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == RESET); return RESET; } else return SET; }然后在主函数while循环内写下如下代码 while (1) { if(Key_Scan(KEY_GPIO_Port,KEY_Pin) == RESET) { HAL_GPIO_TogglePin(GPIOA,LED1_Pin|LED2_Pin); //翻转电平 } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }完事编译项目,生成hex文件即可导入Proteus进行仿真了 Proteus仿真先绘制原理图,找到需要的元件,根据设置好的引脚进行连线即可。 原理图如下图所示 双击芯片STM32F103R6,导入Keil项目中生成的hex文件,设置主频为72MHz,选择PCB封装包(对应STM32CubeMX选择芯片包那一步),确定即可。
如何做到不直接将元件和芯片相连线? 比如上面那张原理图的按钮就没有直接和芯片连线 我们只要找到对应的引脚,点击左键拉出一条线,然后拉到网格的某个点,再次点击左键形成一个黑色的连接结点。 接着我们右键生成的这条连线,选择"添加网络标号",然后给这条连线添加标签即可
主要是做一个学习的记录,方便下次查看 我是爱学习的诸葛铁锤,觉得有用的话点个赞哈,啾咪 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |