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)相关推荐

  1. STM32CubeMX——GPIO配置

    STM32CubeMX--GPIO配置 说明 GPIO-output 配置部分 新建工程 配置系统时钟 配置GPIO引脚(以PB15为例) 配置时钟树 项目文件设置 代码部分 函数说明 应用举例 GP ...

  2. kube-controller-manager 配置参数解读

    下面是kube-controller-manager version 1.12.0的所有配置,其中高亮加粗的是我认为需要注意的Flag. Flag Comments –allocate-node-ci ...

  3. DSP 28335中GPIO配置

    F28335有三种32位的I/O口,依次PORTA(GPIO0-GPIO31),  PORTB(GPIO32-GPIO63),  PORTC(GPIO64-GPIO87),这些口都可以配置为普通的数字 ...

  4. MTK 驱动开发(2)---GPIO 配置

    1.GPIO 配置 拿到一个手机项目,GPIO 总是和MTK 提供的默认的代码的GPIO 的使用不一样,需要根据原理图进行修改GPIO配置,配置GPIO 需要使用MTK 提供的工具DrvGen.exe ...

  5. GPIO 配置之ODR, BSRR, BRR 详解

    STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...

  6. STM32F1模拟iic的GPIO配置(小总结)

    最近学习,发现需要总结一下模拟iic的gpio配置,相信你懂得,但是最好还是需要理解清楚. 1.初始化GPIO void IIC_Init(void) { GPIO_InitTypeDef GPIO_ ...

  7. 国民技术GPIO配置推挽输出模式

    GPIO配置是在开发单片机常用的.下面就来介绍如何将GPIO配置推挽输出模式. typedef enum {GPIO_Mode_Input = 0x00000000, /*!< Input Fl ...

  8. 【SemiDrive源码分析】【驱动BringUp】13 - GPIO 配置方法

    [SemiDrive源码分析][驱动BringUp]13 - GPIO 配置方法 一.Android Linux 下 GPIO 配置方法(AP1 Domain - 6 * A55) 1.1 Kerne ...

  9. TMS320F283743之GPIO配置

    介绍 TMS320F28374S具有12路独立外设接口可供CPU的GPIO使能端口控制,每个端口都可以被外设或者位两个CPU中的主机控制,以下位具体端口: • Port A consists of G ...

最新文章

  1. Scrum Master如何让敏捷团队正常运转?
  2. Java对象容器——集合Set
  3. Vue—相关工具—webpack
  4. 聊聊JVM(三)两种计算Java对象大小的方法
  5. python gdb coredump_Linux段错误及GDB Coredump调试方法
  6. 本地缓存防止缓存击穿_防止缓存爆炸的快速提示
  7. 金昌搜索引擎优化网络推广_网络推广优化企业服务
  8. 用 Golang 写一个搜索引擎(0x07)--- 正排索引
  9. 何时可以开启透明数据加密(TDE)?
  10. 二分法之旋转有序数组
  11. 图文:centos5.3下VMware虚拟机NAT上网实现
  12. 5G商业化进程提速 运营商推进网络智能化转型
  13. python csv wordpress xmlrpc_wordpress_xmlrpc模块批量自动发布文章到wordpress - 老牛博客...
  14. ios android 系统字体,ios、android 系统字体说明
  15. 局域网 访问计算机 软件,局域网共享软件
  16. 不再被日报月报折磨!一键生成报表模板的神器来了
  17. mysql rrd_将RRD数据库中数据导入MYSQL中_MySQL
  18. SUMIFS函数 、MATCH及INDEX函数
  19. 饿了么的树形控件的使用
  20. 苹果Mac如何查看多张图片?

热门文章

  1. 丝绸之路大数据交易中心成立
  2. 抓systrace的常用的四种方法
  3. 虹科茵赛飞3D Evolution的CAD转换功能:高级的CAD转换器
  4. 在城域网条件下城乡学校之间校际合作和互动发展研究
  5. 云计算解码(第2版)运营商观点第一书
  6. 量子力学计算机的运算对象,计算机代数在量子力学和量子电动力学中的应用.pdf.pdf...
  7. 走进JavaWeb技术世界10:从JavaBean讲到Spring
  8. 从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探...
  9. 大数据统计租房市场现状(上海篇)
  10. 用什么软件去除视频上的水印?