第二章 stm32 cubemx GPIO输入输出实验以及proteus仿真

丶灬走出姿态 提交于 2020-10-01 10:06:41

第二章 stm32 cubemx GPIO输入输出实验以及proteus仿真



前言

上一章,简单介绍了 STM32F103 的 IO口作为输出的使用,这一章,我们将简单介绍如何使用 STM32F103的 IO口作为输入的使用。在本章中,我们将利用一个或者两个按键,(按键为任意IO口,有stm32F103板子需要结合原理图来选择IO口)来控制 LED 的亮灭。通过本章的学习,将了解到 STM32F1 的 IO 口作为输入口 的使用方法。


一、按键输入

STM32F103 的 IO口做输入使用的时候,是通过调用函数 HAL_GPIO_ReadPin来读取 IO 口的高低电平的状态来进行直接控制。这一章利用一个按键来控制两种情况下,灯效的变化,来体现出按键输入实验的效果。
具体的基础配置过程此处省略,详情参考:第一章 stm32 cubemx基础配置实验以及proteus 8的使用

二、使用步骤

1.基础配置

1)sys中,选好调试方式,DEBUG中选中Serial Wire,实际上板子测试时会占用PA13和PA14两个I/O口,用作下载或者调试。
2)RCC时钟,晶振选择,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator,外部低速时钟(LSE)可有可无。
3)时钟配置,记录系统时钟频率,这里是72M用作仿真时选择芯片的晶振频率。
4)其他配置此工程不用,暂不配置。


2.配置引脚

点击想要用到的引脚,鼠标左击选择GPIO_INPUT,GPIO_OUTPUT,我用到了PA1、PA4、PA5(自选)三个引脚,PA1作为按键的引脚,PA4、PA5两个引脚作为两个LED灯引脚,其他配置为cubemx默认状态即可。
在这里插入图片描述
在这里插入图片描述

3.生成工程

1.选择复制所有库函数,这个选择会减慢编译的速度,但是会包含所有函数方便调用以及查看,建议初学者使用此项。
2.将所加入的外设功能代码生成单独的文件。
在这里插入图片描述

4.找到主函数,添加程序,编译,生成HEX文件

//if( HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)== 1)//如果没有设置标签
if( HAL_GPIO_ReadPin(BUTTON_GPIO_Port, BUTTON_Pin)== 1)//双闪
	{
 	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
        HAL_Delay(100);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
        HAL_Delay(100);
	}
else //跑马灯
     {
     	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
        HAL_Delay(100);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
        HAL_Delay(100);
     }

在这里插入图片描述

三.Proteus仿真或者烧录可直接看到效果。

直接烧录时一定要注意选择的IO口,与实际stm32板子的原理图相匹配。实验效果为未按下按键输入为高电平,呈现双闪效果,按下按键后输入低电平,呈现跑马灯效果。
仿真时此时较上一章加入了按键与上拉电阻,如图所示,具体过程请参考:第一章 stm32 cubemx基础配置实验以及proteus 8的使用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍了GPIO用做输入输出时的使用以及利用Proteus仿真看到的效果,如果是在基础配置Cubemx或者基础操作Proteus时出现问题请参考:第一章 stm32 cubemx基础配置实验以及proteus 8的使用

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!