目录
  1. 1. 新建工程模板和GPIO工作原理
    1. 1.1. 新建工程模板:寄存器版本
    2. 1.2. 新建工程模板: HAL库版本
  2. 2. GPIO工作原理
    1. 2.0.1. GPIO简介
    2. 2.0.2. GPIO工作模式
    3. 2.0.3. GPIO寄存器
新建工程模板和GPIO工作原理

新建工程模板和GPIO工作原理

新建工程模板:寄存器版本

一般步骤:①新建工程目录,复制需要的文件到工程目录

​ ② 把工程需要的文件添加到工程

​ ③在MDK中设置把头文件存放路径

​ ④配置MDK:全局宏定义等

​ ⑤编写用户函数

​ ⑥添加ALIENTEK系统文件夹SYSTEM

新建工程模板: HAL库版本

固件库就是函数的集合(API),把寄存器操作封装起来。

STM32F4 HAL库文件关系图

STM32F4hal库文件描述

步骤:①复制所需要文件到工程包中。

​ ② 把工程文件引入工程中。

​ ③ 设置头文件包含路径

​ ④ MDK设置(全局宏定义,编译文件存放路径等)

​ ⑤ 编写用户程序

​ ⑥添加ALIENTEK系统文件夹SYSTEM

​ ⑦修改相关文件参数适配开发板

GPIO工作原理

参考资料《STM32FXX开发指南-库函数版本》-第六章 跑马灯实验/《STM32F4xx中文参考手册》-第7章通用IO

\7,硬件资料\2,芯片资料\STM32F429IGT6.pdf

GPIO简介

GPIO全称general purpose intput output ,通用输入输出端口。 可以做输入也可以做输出。GPIO端口可通过程序配置成输入或者输出。

STM32的引脚中,有部分是做GPIO使用,部分是电源引脚/复位引脚/启动模式引脚/晶振引脚/调试下载引脚。

对于STM32FXXXIGT6来说, 一共有9组IO: PAPI,其中PAPH 每组16个IO,PI只有PI0~PI11。所以一共有140个IO口:16*8+12=140。

STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口)。一个引脚,可以作为IO口,同时也可以作为复用功能外设引脚。

GPIO工作模式

4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入。

4种输出模式(带上下拉):开漏输出,开漏复用功能,推挽式输出,推挽式复用功能。

4中最大输出速度:2MHz,25MHz,50MHz,100MHz。

IO基本结构

推挽输出:可以输出强高低电平,连接数字器件。

开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行。 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)

上电复位后,GPIO默认为输入浮空状态,部分特殊功能引脚为特定状态。复位后,调试引脚处于复用功能上拉/下拉状态:

PA15:JTDI处于上拉状态

PA14:JTCK/SWCLK处于下拉状态

PA13:JTMS/SWDAT处于下拉状态

PB4:NJTRST处于上拉状态

PB3:JTDO处于浮空状态

GPIO寄存器

每组IO口由10个寄存器组成 ,如果芯片有GPIOA~GPIOI 9个组,那么一共有对应9X10=90个寄存器。

每组GPIO端口的寄存器包括:

一个端口模式寄存器(GPIOx_MODER) 16组32位,4种工作模式。

GPIO端口模式寄存器

一个端口输出类型寄存器(GPIOx_OTYPER) 低16位共32位,2种工作模式

端口输出类型寄存器

一个端口输出速度寄存器(GPIOx_OSPEEDR) 16组32位 4种模式

端口输出速度寄存器

一个端口上拉下拉寄存器(GPIOx_PUPDR) 16组32位 4种模式

端口上拉下拉寄存器

一个端口输入数据寄存器(GPIOx_IDR)低16位共32位,IDR->PA

一个端口输出数据寄存器(GPIOx_ODR) 低16位共32位,RW->PA

一个端口置位/复位寄存器(GPIOx_BSRR) 低16位(置为),高16位(复位)

端口置位复位寄存器

一个端口配置锁存寄存器(GPIOx_LCKR) 17位共32位 0-16端口锁定键,位17LCKK锁定键

端口配置锁定寄存器

两个复用功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)

文章作者: jiangzuojiben
文章链接: http://jiangzuojiben.github.io/2019/10/29/%E6%96%B0%E5%BB%BA%E5%B7%A5%E7%A8%8B%E6%A8%A1%E6%9D%BF%E5%92%8CGPIO%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jiangzuojiben