GPIO配置及解读(STM32CubeMx)
GPIO是General Purpose Input Output (通用输入输出)的缩写,在物理上的GPIO就是芯片的引脚。通用指的是GPIO具有多种模式,输入输出指的是GPIO具有输入和输出这两种基本模式,为什么说是有两种基本模式呢,因为GPIO的模式是有很多种的,但是最基本的两种模式一个是输入另一个是输出,这个还是比较好理解的,就是无论我们如何去使用的引脚,它最终的作用都是去输出电平或者检测输入电平。
以上就是GPIO的含义,因为根据笔者自己的经验,太长的文章和教程笔者自己也是懒得看的,我们查资料无非就是个图个方便快捷、简单易懂。所以笔者也不费口舌从那些GPIO结构图里一部分一部分分析。我们简单粗暴的用stm32CubeMx来直观解读GPIO的控制。
↑笔者手上的事STM32f103ZET6的学习板,所以就开个这样的工程。
↑新建工程以后以上两步也是最基本的,设置时钟源。为了符合简单粗暴的宗旨,这个具体之后再出个专门讲的。现在大概记得就是这东西就是选择板子的时钟源的,没他不行。
↑这一步则是随便找个引脚启用,上面的引脚除了个别有特殊用途大部分都是GPIO,简单点区分就是PX(此处的X代指:A、B、C...等字母)等都是GPIO。
↑这里配置GPIO的:配置好后的GPIO输出电平:就是配置好后GPIO输出的是高电平还是低电平
GPIO模式:有总的分为输入输出,输出又分开漏输出和推挽输出,输入就没有分
GPIO引脚上下拉:决定是否加上上拉电阻或者下拉电阻
GPIO速度:有低中高三种速率选择
GPIO引脚名字:自己取个名字,会代替GPIO_PIN_5这样的系统默认名
↑这是配置时钟树。简单粗暴就按这么配就好了,不影响。下次再讲
↑上面第一个框选第二个可以只添加需要用的HAL库文件(stm32CUBEMx都是生成HAL库的)。第二个框选1、3、4,三和四是不用动的自动勾选,把二改成一可以让你生成的各个文件分成.c和.h文件生成。
不懂就按这个选,如果不懂想搞懂的话就自己勾选然后创建工程,区别还是蛮明显的。
↑因为笔者用的是Keil5,所以这边的IDE是选MDK-ARM和V5,反正在笔者看来keil界面简洁,调试简单,是非常适合单片机的程序编写的。
还有要注意的是保存文件的路径不要带有中文字符,不然会报错。
↑Application/MDK-ARM:
这是启动文件,是用汇编和c语言写的,主要是在main函数执行前进行一些初始化,比如中断向量表啥的。Cube自动添加的可以暂时不用管。
Application/User/Core:
用户自定义文件,虽然里面的这些刚打开的时候也是Cube生成的,但是一般你自己写的也放这里。
Drivers/STM32F1XX_HAL_Driver:
HAL库文件,就是封装好的各个外设使用函数的库文件
Driver/CMSIS:
st系统文件,启动文件会调用这文件里的函数,实现时钟配置和中断向量表地址的配置啥的。
↑在gpio.c里面我们能看到MX_GPIO_Init这个函数,这个函数就是GPIO的初始化函数。
↑keil在一些初始化后,也是从main函数开始。可以看到刚刚在gpio.c里被定义的函数在这使用了,很明显是用来初始化gpio的。但是如果想要使用gpio光是初始化了也是不够的。简单来说就是你准备好了做饭的菜、工具但是并不意味着饭就可以吃了。
↑可以看到GPIO的HAL库里提供的两个函数,一个是红圈的HAL_GPIO_ReadPin一个是篮圈的HAL_GPIO_WritePin。顾名思义,前面是读取引脚电平后者是写引脚电平。所以如果想要改变刚刚初始化好了的的GPIO的电平,只需要使用这两个已经封装好的函数即可。
↑如上,HAL_Delay是一个hal库自带的毫秒级延时函数。所以上面的程序的意识就是让PB8每隔1S翻转一次电平。
GPIO配置及解读(STM32CubeMx)相关推荐
- STM32CubeMX——GPIO配置
STM32CubeMX--GPIO配置 说明 GPIO-output 配置部分 新建工程 配置系统时钟 配置GPIO引脚(以PB15为例) 配置时钟树 项目文件设置 代码部分 函数说明 应用举例 GP ...
- kube-controller-manager 配置参数解读
下面是kube-controller-manager version 1.12.0的所有配置,其中高亮加粗的是我认为需要注意的Flag. Flag Comments –allocate-node-ci ...
- DSP 28335中GPIO配置
F28335有三种32位的I/O口,依次PORTA(GPIO0-GPIO31), PORTB(GPIO32-GPIO63), PORTC(GPIO64-GPIO87),这些口都可以配置为普通的数字 ...
- MTK 驱动开发(2)---GPIO 配置
1.GPIO 配置 拿到一个手机项目,GPIO 总是和MTK 提供的默认的代码的GPIO 的使用不一样,需要根据原理图进行修改GPIO配置,配置GPIO 需要使用MTK 提供的工具DrvGen.exe ...
- GPIO 配置之ODR, BSRR, BRR 详解
STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...
- STM32F1模拟iic的GPIO配置(小总结)
最近学习,发现需要总结一下模拟iic的gpio配置,相信你懂得,但是最好还是需要理解清楚. 1.初始化GPIO void IIC_Init(void) { GPIO_InitTypeDef GPIO_ ...
- 国民技术GPIO配置推挽输出模式
GPIO配置是在开发单片机常用的.下面就来介绍如何将GPIO配置推挽输出模式. typedef enum {GPIO_Mode_Input = 0x00000000, /*!< Input Fl ...
- 【SemiDrive源码分析】【驱动BringUp】13 - GPIO 配置方法
[SemiDrive源码分析][驱动BringUp]13 - GPIO 配置方法 一.Android Linux 下 GPIO 配置方法(AP1 Domain - 6 * A55) 1.1 Kerne ...
- TMS320F283743之GPIO配置
介绍 TMS320F28374S具有12路独立外设接口可供CPU的GPIO使能端口控制,每个端口都可以被外设或者位两个CPU中的主机控制,以下位具体端口: • Port A consists of G ...
最新文章
- Scrum Master如何让敏捷团队正常运转?
- Java对象容器——集合Set
- Vue—相关工具—webpack
- 聊聊JVM(三)两种计算Java对象大小的方法
- python gdb coredump_Linux段错误及GDB Coredump调试方法
- 本地缓存防止缓存击穿_防止缓存爆炸的快速提示
- 金昌搜索引擎优化网络推广_网络推广优化企业服务
- 用 Golang 写一个搜索引擎(0x07)--- 正排索引
- 何时可以开启透明数据加密(TDE)?
- 二分法之旋转有序数组
- 图文:centos5.3下VMware虚拟机NAT上网实现
- 5G商业化进程提速 运营商推进网络智能化转型
- python csv wordpress xmlrpc_wordpress_xmlrpc模块批量自动发布文章到wordpress - 老牛博客...
- ios android 系统字体,ios、android 系统字体说明
- 局域网 访问计算机 软件,局域网共享软件
- 不再被日报月报折磨!一键生成报表模板的神器来了
- mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
- SUMIFS函数 、MATCH及INDEX函数
- 饿了么的树形控件的使用
- 苹果Mac如何查看多张图片?
热门文章
- 丝绸之路大数据交易中心成立
- 抓systrace的常用的四种方法
- 虹科茵赛飞3D Evolution的CAD转换功能:高级的CAD转换器
- 在城域网条件下城乡学校之间校际合作和互动发展研究
- 云计算解码(第2版)运营商观点第一书
- 量子力学计算机的运算对象,计算机代数在量子力学和量子电动力学中的应用.pdf.pdf...
- 走进JavaWeb技术世界10:从JavaBean讲到Spring
- 从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探...
- 大数据统计租房市场现状(上海篇)
- 用什么软件去除视频上的水印?