STM32中使用GPIO的总结超强

合集下载

stm32实训报告经验总结

stm32实训报告经验总结

stm32实训报告经验总结STM32实训报告经验总结一、引言在这次STM32实训中,我深入了解了微控制器的基本原理和操作,学会了使用Keil MDK-ARM软件进行编程,掌握了STM32的GPIO、串口、定时器等基本外设的使用。

通过实际操作,我对于嵌入式系统设计和开发有了更深刻的理解。

二、实训过程1. 基础知识学习:首先,我通过阅读教材和网上资料,学习了微控制器的基本概念、STM32的体系结构和外设特性。

我了解到,STM32是一款功能强大的32位ARM Cortex-M核微控制器,具有丰富的外设接口和强大的处理能力。

2. 开发环境搭建:我按照教程安装了Keil MDK-ARM软件,配置了开发环境。

Keil软件提供了完整的开发工具链,包括代码编辑、编译链接、调试和仿真等功能。

3. 硬件平台搭建:我使用STM32开发板搭建了硬件平台。

我熟悉了开发板的电路原理图和引脚配置,了解了各个外设接口的使用方法。

4. 编程实践:在理解了基本概念和操作方法后,我开始进行编程实践。

我编写了GPIO输入输出、串口通信、定时器中断等程序,通过实际操作掌握了STM32的基本外设使用。

5. 调试与优化:在编程过程中,我遇到了许多问题,通过查阅资料和反复调试,最终解决了问题。

我还对程序进行了优化,提高了程序的效率和稳定性。

三、实训收获通过这次实训,我掌握了STM32微控制器的开发流程和基本外设的使用方法。

我学会了使用Keil MDK-ARM软件进行编程和调试,了解了嵌入式系统设计和开发的实际操作过程。

同时,我在实践中遇到了许多问题,通过解决问题,我提高了解决问题的能力。

四、展望未来这次实训让我对嵌入式系统设计和开发有了更深刻的理解。

在未来的学习和工作中,我将继续深入学习嵌入式系统的相关知识,掌握更多的技能和方法。

同时,我将尝试将所学知识应用到实际项目中,提高自己的实践能力和工程经验。

STM32F103单片机GPIO使用步骤

STM32F103单片机GPIO使用步骤

STM32F103单片机GPIO使用步骤“快速上手STM32F103单片机,在完成单片机keil编程环境的配置后,第一个要学会的就是GPIO使用,GPIO的常用功能是输入输出,本文将介绍GPIO的C编程步骤。

”01—输出功能配置使用GPIO的步骤为以下所述:(1)开启使用引脚的时钟,因此STM32单片机为了实现其低功耗,只有在具体某个GPIO口使能时钟后,此处时钟选择需要与下文(2)中GPIO引脚相对应方能使用,具体对应关系查看手册,如图1所示,PC[15:0]表示PC15~PC0,同理PA[15:0]、PB[15:0]、PD[15:0]和PE[15:0]。

GPIOC对应PC[15:0],GPIOC又对应APB2总线。

本文PC13使能时钟为APB2;(2)配置GPIO结构体参数,分别配置输出模式为推挽输出模式,选择GPIO引脚为PC13,输出频率为最高50MHz。

(3)设置输出引脚的具体数值,0或者1,也即高低电平。

图102—keil程序Keil软件中,在User组下添加main.c文件,在该文件下添加如下代码:#include "stm32f10x.h" // 包含头文件,stm32f10x.h的定义文件int main(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOC的时钟GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO结构体GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //选择GPIO端口,P13GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //选择GPIO端口速度GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //选择GPIO端口输出模式,推挽GPIO_Init(GPIOC,&GPIO_InitStruct); //初始化选择GPIOC端口GPIO_ResetBits(GPIOC,GPIO_Pin_13); //P13复位,为0while(1) //无限循环,保证单片机运行状态{}}编译文件,无错误后,可下载程序到单片机中执行。

gpio实验报告总结

gpio实验报告总结

GPIO实验报告总结一、实验目的与背景本次GPIO实验的主要目的是深入了解GPIO(General Purpose Input/Output)接口的工作原理和应用,通过实际操作和数据分析,提高对嵌入式系统硬件接口的理解和掌握。

实验背景是基于当前嵌入式系统在各种应用中的普及,GPIO 接口作为其中重要的硬件接口,对于理解嵌入式系统的运作方式具有重要意义。

二、GPIO基础知识GPIO接口是一种通用输入输出接口,它允许CPU与外部设备或传感器进行通信。

通过设置GPIO引脚的电平状态,CPU可以向外部设备发送数据,同时也可以接收外部设备发送的数据。

在嵌入式系统中,GPIO接口被广泛应用于各种硬件设备的控制和数据采集。

三、实验设备与工具本次实验使用的设备包括开发板、杜邦线、电源适配器、串口调试工具等。

其中,开发板提供了丰富的GPIO接口和外设接口,方便我们进行实验操作。

串口调试工具用于实时监控和调试实验过程。

四、实验步骤与操作连接实验设备:将开发板与电源适配器连接,为开发板提供稳定的电源。

使用杜邦线连接开发板的GPIO接口和外设接口,确保连接可靠。

编写程序:根据实验要求,编写相应的程序代码。

在程序中,我们需要配置GPIO引脚的工作模式(输入或输出),并控制引脚的电平状态进行数据传输。

下载程序:将程序代码下载到开发板中,启动程序。

实验操作:通过串口调试工具观察程序的运行状态和GPIO引脚的电平变化。

根据实验要求,进行相应的操作,如读取传感器数据、控制外部设备等。

记录数据:在实验过程中,记录关键步骤的实验数据和结果,以便后续分析和解释。

五、实验数据与结果通过实验操作,我们获得了以下数据和结果:GPIO引脚配置成功,可以正常工作在输入或输出模式。

通过GPIO接口成功读取了传感器数据,数据准确无误。

通过GPIO接口成功控制了外部设备,实现了预期的功能。

在实验过程中,记录了详细的实验数据和结果,包括GPIO引脚的电平状态、传感器数据、外部设备控制状态等。

STM32关于GPIO与AFIO的总结20130709

STM32关于GPIO与AFIO的总结20130709

GPIO功能描述每个GPI/O 端口有两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR 和GPIOx_ODR),一个32位置位/ 复位寄存器(GPIOx_BSRR) ,一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR) 。

根据数据手册中列出的每个I/O 端口的特定硬件特征,GPIO 端口的每个位可以由软件分别配置成多种模式。

─输入浮空─输入上拉─输入下拉─模拟输入─开漏输出─推挽式输出─推挽式复用功能─开漏复用功能每个I/O 端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问( 不允许半字或字节访问) 。

GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/ 更改的独立访问;这样,在读和更改访问之间产生IRQ 时不会发生危险。

推挽与开漏推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).单独的位设置或位清除当对GPIOx_ODR 的个别位编程时,软件不需要禁止中断:在单次APB2写操作里,可以只更改一个或多个位。

这是通过对“置位/ 复位寄存器”(GPIOx_BSRR ,复位是GPIOx_BRR) 中想要更改的位写’1’来实现的。

没被选择的位将不被更改。

外部中断/唤醒线所有端口都有外部中断能力。

为了使用外部中断线,端口必须配置成输入模式。

复用功能(AF)使用默认复用功能前必须对端口位配置寄存器编程。

●对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动注意:也可以通过软件来模拟复用功能输入引脚,这种模拟可以通过对GPIO控制器编程来实现。

stm32 gpio读取函数

stm32 gpio读取函数

1. 基础概念在开始介绍STM32 GPIO读取函数之前,让我们先来了解一下GPIO 的基本概念。

GPIO,即通用输入输出,是单片机中常见的一种外设模块,用于实现与外部设备的数字通信。

在STM32系列的单片机中,GPIO模块提供了丰富的功能和灵活的配置,使得我们可以通过GPIO 口实现数字信号的输入和输出。

2. GPIO读取函数在STM32系列的单片机中,我们可以通过调用相关的库函数来实现对GPIO口的读取操作。

其中,对于输入操作,我们可以使用GPIO_ReadInputDataBit函数来实现。

该函数的原型为:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin)。

其中,GPIOx代表GPIO口的基位置区域,GPIO_Pin代表具体的引脚编号,函数的返回值为引脚的状态,通常是0或1,代表低电平和高电平。

3. 深入理解在实际的应用中,我们需要从硬件层面深入理解GPIO读取函数的原理和使用方法。

我们需要了解GPIO口的工作原理,包括输入模式和输出模式的配置方法,以及GPIO口在不同状态下的电平变化。

我们需要熟悉STM32的库函数,了解库函数的调用方法和参数含义。

我们需要考虑GPIO读取函数在特定场景下的应用,如按键输入、传感器信号读取等。

4. 应用举例假设我们需要通过STM32的GPIO口读取外部按键的状态,并根据按键状态执行相应的操作。

我们可以使用GPIO_ReadInputDataBit函数来读取按键引脚的状态,然后根据返回的状态值进行逻辑判断,从而实现按键的检测和响应。

这个例子充分展示了GPIO读取函数在实际中的应用,同时也能帮助我们更深入地理解GPIO的工作原理和库函数的使用。

5. 个人观点和总结从个人角度来看,GPIO读取函数是STM32开发中非常基础和重要的一部分。

通过学习和掌握GPIO读取函数的原理和使用方法,我们可以更好地理解STM32的GPIO模块,并能够在实际的项目中灵活应用。

STM32中GPIO的8种工作模式总结

STM32中GPIO的8种工作模式总结

STM32 中GPIO 的8 种工作模式总结
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。

高低电平由IC 的电源决定。

形象点解释:推挽,就是有推有拉,任何时候IO 口的电平都是确定的,不需要外接上拉或者下拉电阻。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路
中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。

输出既可以向负载灌电流,也可以从负载抽取电流。

推拉式输出级既提高电路的负载能力,又提高开关速度。

二、开漏输出:
开漏,就等于输出口接了个NPN 三极管,并且只接了E,B,而C 极是开
路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出
1 的时候,就可以是5V 电压,也可以是3.3V 电压了,但是不接电阻上拉的
时候,这个输出高就不能实现了。

输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。

适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA 以内)。

开漏形
式的电路有以下几个特点:。

使用HAL库开发STM32GPIO口基础使用与外部中断

使用HAL库开发STM32GPIO口基础使用与外部中断

使用HAL库开发STM32GPIO口基础使用与外部中断GPIO(General Purpose Input/Output)是STM32系列微控制器上常见的功能模块之一,它用于与外部设备进行数据交互。

本文主要介绍如何使用HAL库来配置和使用STM32的GPIO口,并实现外部中断功能。

在使用GPIO口之前,我们首先需要了解STM32芯片上的GPIO引脚的命名方式。

以STM32F103C8T6为例,它具有32个GPIO引脚,从PA0到PA15和PB0到PB15、其中,GPIO口的命名方式为"A"加上引脚的编号。

例如,PA0表示GPIOA的第0个引脚,PB10表示GPIOB的第10个引脚。

1.引入头文件和宏定义首先,在代码文件的顶部引入"stm32f1xx_hal.h"头文件。

然后,在需要使用GPIO功能的地方,定义一个GPIO_InitTypeDef结构体变量,并通过它来配置GPIO的参数。

2.配置GPIO模式和速度在设置GPIO口之前,需要配置GPIO的模式和速度。

通过设置GPIO_InitStruct结构体变量的对应成员变量来实现。

例如,要将PA5配置为推挽输出模式,可以使用如下语句:```GPIO_InitStruct.Pin = GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);```这里,GPIO_PIN_5表示PA5引脚,GPIO_MODE_OUTPUT_PP表示推挽输出模式,GPIO_SPEED_FREQ_HIGH表示高速模式。

3.配置GPIO引脚在配置好GPIO模式和速度后,可以通过HAL_GPIO_Init函数来配置GPIO引脚,并进行初始化。

gpio实验心得

gpio实验心得

gpio实验心得
GPIO实验心得
GPIO是指通用输入输出端口,是单片机中非常重要的一个部分。

在学习单片机的过程中,GPIO的实验是必不可少的一部分。

在我的学习过程中,我也进行了一些GPIO实验,下面是我的心得体会。

GPIO实验需要我们掌握一些基本的电路知识,比如电阻、LED等。

在实验中,我们需要将这些元件与单片机的GPIO口连接起来,才能进行实验。

因此,我们需要了解这些元件的特性,以及如何正确地连接它们。

GPIO实验需要我们掌握一些基本的编程知识。

在实验中,我们需要编写程序来控制GPIO口的状态,比如将GPIO口设置为输出模式,然后将其输出高电平或低电平。

因此,我们需要了解如何编写简单的程序,并且需要了解一些基本的语法和函数。

GPIO实验需要我们具备一定的实验能力。

在实验中,我们需要正确地连接电路,编写正确的程序,并且需要进行一些调试工作。

因此,我们需要具备一定的实验经验和实验能力,才能顺利地完成GPIO实验。

总的来说,GPIO实验是一项非常重要的实验,它可以帮助我们更好地了解单片机的工作原理,掌握一些基本的电路知识和编程知识,提高我们的实验能力。

在我的学习过程中,我通过GPIO实验,不
仅学到了很多知识,还提高了我的实验能力和动手能力。

因此,我认为GPIO实验是非常有意义的,值得我们认真学习和探索。

STM32的八种GPIO工作方式详解

STM32的八种GPIO工作方式详解

STM32的八种GPIO工作方式详解STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。

GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。

通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。

STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。

GPIO基本结构每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。

这边的电路图稍微提一下:保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。

但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。

P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

这里的电路会在下面很详细地分析到。

TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。

但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。

ADC外设要采集到的原始的模拟信号。

这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着。

STM32开发板例程讲解之二:GPIO的描述和配置,GPIOIOTG例程精讲ch...

STM32开发板例程讲解之二:GPIO的描述和配置,GPIOIOTG例程精讲ch...
(二)专门的寄存器(GPIOx_BSRR 和GPIOx_BRR) 实现对GPIO 口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清 除I/O端口的操作不会被中断处理打断而造成误动作。 (三)每个GPIO 口都可以作为外部中断的输入,便于系统灵活设计。 (四)I/O口的输出模式下,有3种输出速度可选(2MHz 、10MHz 和50MHz) ,这有利于噪声控制。 (五)所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。 (六)大电流驱动能力:GPIO 口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD1.3V时,可以提供或吸收20mA电流。 (七)具有独立的唤醒I/O口。 (八)很多I/O口的复用功能可以重新映射。 (九)GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的 情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。
#if 0 // 配置所有未使用GPIO引脚为输入模式(浮空输入),这样可以降低功耗,并且提高器件的抗EMI/EMC 的性能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);
//armfly :注释掉的原因是当代码在外部存储器运行时,GPIOD,E,F,G部分IO用于FSMC,因此对这些IO不能重置,否则导致取指异常 // GPIO_Init(GPIOD, &GPIO_InitStructure); // GPIO_Init(GPIOE, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

STM32 GPIO教程

STM32 GPIO教程
通用输入输出端口 GPIO
系统外设
GPIO特性
最大封装(64引脚)上多达55个多功能双向GPIO(GPIO 引脚占有率相比STM32F1系列的80%更增加到86%) 几乎所有GPIO都是5V容忍(ADC引脚除外) GPIO分布在5个端口上:GPIOA[0~15]、GPIOB[0~15]、 GPIOC[0~15]、GPIOD[0~2]、GPIOF[4~7] 使用BSRR和BRR寄存器可以完成对引脚的原子置位和 复位操作 GPIO连在AHB总线,使得最高翻转速度高达12MHz 输出斜率可配置,高达50MHz 端口A和B上的引脚配置可通过LCKR寄存器锁定 55个引脚都可以配置成外部中断(可同时使能16个) 来把MCU从停止模式唤醒
I2C1端口支持1MHz超快速总线【FTf】
PB6/7 (I2C1_SCL/SDA) PB8/9 (I2C1_SCL/SDA)
其余端口都是5V容忍【FT】
10
Quiz
How many I/Os and ports there are in the STM32F0xx microcontroller ? ____________
可编程复用开关使得任意时刻只有一个外设连到 某个具体的GPIO。只有GPIOA和GPIOB有复用开关 某些外设功能还可以重映射到其他引脚,从而使 得能同时使用的外设数量更多
AF0 (SPI1_MISO) AF1 (TIM3_CH1) AF2 (TIM1_BKIN) Pin x (0…7)
AF7 (COMP1_OUT)
Output Driver
VSS
Push-Pull Open Drain
* In output mode, the I/O speed is configurable through OSPEEDR register: 2MHz, 10MHz or 50MHz

STM32通用输入输出之GPIO(STM32神舟I号开发板)

STM32通用输入输出之GPIO(STM32神舟I号开发板)
I/O
表 3:端口 C GPIO 管脚描述 描述
通用输入/输出 PC1 到 PC12 通用输入/输出 PC13 到 PC15 的 I/O 口功能有限制(同一时间内只有 一个 I/O 口可以作为输出,速度必须限制在 2MHZ 内,而且这些 I/O
口不能当作电流源(如驱动 LED))
管脚名称 PD[1:0]
6.1 通用输入/输出(GPIO) ............................................................................................1 6.1.1 管脚特性...........................................................................................................1 6.1.2 GPIO应用领域 .................................................................................................1 6.1.3 管脚分配...........................................................................................................1 6.1.4 GPIO管脚内部硬件电路原理剖析..................................................................2 6.1.5 STM32 的GPIO管脚深入分析 ........................................................................5 6.1.6 在STM32 中如何配置片内外设使用的IO端口............................................10 6.1.7 例程 01 单个LED点灯闪烁程序 ..................................................................11 6.1.8 例程 02 LED双灯闪烁实验 ........................................................................14 6.1.9 例程 03 LED三个灯同时亮同时灭 ............................................................16 6.1.10 例程 04 LED流水灯程序 ...............................................................................17

STM32IO口函数GPIO使用说明

STM32IO口函数GPIO使用说明

STM32IO口函数GPIO使用说明STM32是一款广泛使用的32位单片机,具有丰富的外设资源,其中之一就是IO(Input/Output)口。

IO口是STM32与外部世界进行通信的接口,本文将对如何使用STM32IO口函数GPIO进行详细说明。

GPIO是通用输入输出口,可以配置为输入或输出,可以连接到各种外部设备如按钮、开关、LED等。

STM32提供了一系列GPIO口,如GPIOA、GPIOB等。

每个GPIO口有多个引脚可供选择,如GPIOA口有GPIO_Pin_0到GPIO_Pin_15共16个引脚。

在使用IO口之前,需要初始化IO口的设置,包括如下步骤:1.选择GPIO口:选择需要操作的GPIO口,如GPIOA或GPIOB。

2.配置引脚模式:确定所需的引脚模式,如输入、输出或复用模式。

3.配置引脚输出类型:如果选择输出模式,需要确定输出类型,如推挽输出或开漏输出。

4.配置引脚速度:确定引脚的传输速度。

5.配置引脚上拉/下拉:确定引脚是否需要上拉或下拉电阻。

6.配置引脚复用功能:如果选择复用模式,配置引脚使用的功能。

以下为具体的GPIO函数说明:1. GPIO_InitTypeDef:GPIO初始化结构体,包含需要配置的GPIO口、引脚模式、输出类型、速度、上拉/下拉等信息。

- 参数:GPIO_TypeDef* GPIOx:需要初始化的GPIO口;uint16_t GPIO_Pin: 需要初始化的引脚。

2. GPIO_Pin_0到GPIO_Pin_15:宏定义,用于选择要配置的引脚。

3. GPIO_Mode:引脚模式枚举类型,包括输入模式(GPIO_Mode_IN)、输出模式(GPIO_Mode_OUT)和复用功能模式(GPIO_Mode_AF)。

4. GPIO_Speed:引脚速度枚举类型,包括低速(GPIO_Speed_2MHz)、中速(GPIO_Speed_10MHz)和高速(GPIO_Speed_50MHz)。

STM32F4GPIO

STM32F4GPIO

STM32F4GPIO概述 GPIO,即通⽤I/O(输⼊/输出)端⼝,是STM32可控制的引脚。

STM32芯⽚的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32F407有9组IO。

分别为GPIOA~GPIOH,除了GPIOH只有两个IO引脚外,每组IO有16根引脚,⼀共114个I/O引脚。

每组通⽤I/O端⼝包括:4个32位寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2个32位数据寄存器(GPIOx_IDR 和GPIOx_ODR)、1个32 位置位/复位寄存器 (GPIOx_BSRR)、1个32位锁定寄存器(GPIOx_LCKR)和2个32位复⽤功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。

寄存器功能配置寄存器GPIOx_MODER配置IO引脚为输⼊或输出,复⽤功能,模拟模式端⼝引脚输出类型寄存器GPIOx_OTYPER配置IO引脚的输出类型为推挽输出或开漏输出端⼝引脚输出速度寄存器GPIOx_OSPEEDR配置引脚的响应速度为2MHz,25MHz,50MHz,100MHz端⼝上拉/下拉寄存器 (GPIOx_PUPDR)设置上拉或下拉,或者都不要端⼝引脚输⼊数据寄存器GPIOx_IDR输⼊模式,⽤于输⼊设备,如读IO引脚对应此寄存器的位判断按键是否按下端⼝引脚输出数据寄存器GPIOx_ODR输出模式,输出需要的⾼电平或低电平置位/复位寄存器GPIOx_BSRR对GPIOx_ODR的位进⾏置位或清零操作锁定寄存器GPIOx_LCKR)锁定端⼝引脚的位置,直到系统复位才能解除锁定复⽤功能⾼位选择寄存器GPIOx_AFRH⽤于配置⾼位引脚8~15的复⽤功能复⽤功能低位选择寄存器GPIOx_AFRL⽤于配置低位引脚0~7的复⽤功能GPIO功能描述 GPIO可以配置成如下模式,实际应⽤中应该配置成什么模式,可以根据连接的外设来决定: 输⼊浮空 输⼊上拉 输⼊下拉 模拟功能 具有上拉或下拉功能的开漏输出 具有上拉或下拉功能的推挽输出 具有上拉或下拉功能的复⽤功能推挽 具有上拉或下拉功能的复⽤功能开漏GPIO端⼝位基本结构输⼊浮空 该模式下,I/O引脚的电平信号直接进⼊输⼊数据寄存器读取数据。

STM32的GPIO的总结

STM32的GPIO的总结

CRL 端口配置低寄存器CRH 端口配置高寄存器IDR 端口输入数据寄存器ODR 端口输出数据寄存器BSRR 端口位设置/复位寄存器BRR 端口位复位寄存器LCKR端口配置锁定寄存器EVCR MAPR I/O EXTICR 事件控制寄存器复用重映射和调试配置寄存器外部中断路线0-15配置寄存器GPIO_DeInit将外设GPIOx寄存器重设为缺省值GPIO_AFIODeInit 将复用功能(重映射事件控制和EXTI设置)重设为缺省值 GPIO_Init 根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 GPIO_StructInit把GPIO_InitStruct中的每一个参数按缺省值填入 GPIO_ReadInputDataBit 读取指定端口管脚的输入GPIO_ReadInputData GPIO_ReadOutputDataBit GPIO_ReadOutputData GPIO_SetBits GPIO_ResetBits GPIO_WriteBit GPIO_Write GPIO_PinLockConfig GPIO_EventOutputConfig GPIO_EventOutputCmd GPIO_PinRemapConfig读取指定的GPIO端口输入读取指定端口管脚的输出读取指定的GPIO端口输出设置指定的数据端口位清除指定的数据端口位设置或者清除指定的数据端口位向指定GPIO数据端口写入数据锁定GPIO管脚设置寄存器选择GPIO管脚用作事件输出使能或者失能事件输出改变指定管脚的映射GPIO_EXTILineConfig选择GPIO管脚用作外部中断路线函数8 种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 摹拟输入5. 开漏输出——(此模式可实现 hotpower 说的真双向 IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式 7 和模式 8 需根据具体的复用功能决定。

STM32JTAG端口作为GPIO口使用的方法

STM32JTAG端口作为GPIO口使用的方法

STM32JTAG端口作为GPIO口使用的方法在STM32微控制器中,JTAG端口通常用作调试和编程接口。

然而,有时候我们可能需要将JTAG端口中的一些引脚用作GPIO口,以便扩展输入/输出功能。

这在特定的应用场景中非常有用。

要将JTAG端口中的引脚用作GPIO口,需要进行以下步骤:1.禁用JTAG功能:默认情况下,JTAG功能是启用的。

需要通过设置相应的寄存器来禁用JTAG功能,以使JTAG引脚变为可用的GPIO引脚。

在STM32上,相关的寄存器是AFIO_MAPR寄存器。

AFIO_MAPR寄存器是用于映射复用器的控制寄存器,通过设置它的特定位,可以将JTAG引脚与GPIO引脚进行映射。

2.设置引脚模式:将JTAG引脚转换为GPIO引脚后,需要在引脚模式寄存器中设置相应的模式。

这可以通过设置GPIOx_CRL和GPIOx_CRH寄存器来实现,其中x表示GPIO端口的编号。

引脚模式寄存器包含16位,每4位用于控制一个引脚的模式和配置。

通过设置适当的位组合,可以控制引脚的输入/输出模式、速度和推挽模式等。

3.配置引脚:在设置好引脚模式后,需要进一步配置引脚的输入/输出特性。

可以通过设置GPIOx_ODR、GPIOx_IDR和GPIOx_BRR等寄存器来实现。

-GPIOx_ODR寄存器用于设置GPIO引脚的输出值。

-GPIOx_IDR寄存器用于读取GPIO引脚的输入值。

-GPIOx_BRR寄存器用于设置GPIO引脚为低电平。

4.示例代码:-禁用JTAG功能:```c//设置AFIO_MAPR寄存器的特定位AFIO->MAPR,=AFIO_MAPR_SWJ_CFG_JTAGDISABLE;```-设置引脚模式:```c//设置GPIO引脚的模式和配置GPIOx->CRL = (GPIOx->CRL & ~(GPIO_CRL_MODEx ,GPIO_CRL_CNFx)) , (GPIO_Mode_Out_PP , GPIO_Speed_2MHz);```-配置引脚:```c//设置GPIO引脚的输出值GPIOx->ODR ,= GPIO_Pin_x;//读取GPIO引脚的输入值input_value = GPIOx->IDR & GPIO_Pin_x;//设置GPIO引脚为低电平GPIOx->BRR = GPIO_Pin_x;```以上就是将STM32的JTAG端口引脚用作GPIO口的方法。

STM32F4学习笔记之GPIO(使用固件库)

STM32F4学习笔记之GPIO(使用固件库)

1.使能GPIO的AHB时钟,使用函数:RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);2.配置GPIO工作模式用GPIO_Init()函数数据类型说明typedef struct{uint32_t GPIO_Pin; //引脚配置GPIOMode_TypeDef GPIO_Mode; //GPIO_Mode_IN(输入),GPIO_Mode_OUT(输出),GPIO_Mode_AF (备用),GPIO_Mode_AN(模拟)GPIOSpeed_TypeDef GPIO_Speed;// GPIO_Speed_2MHz,GPIO_Speed_25MHz,GPIO_Speed_50MHz,GPIO_Speed_100MHzGPIOOType_TypeDef GPIO_OType; // GPIO_OType_PP(推挽),GPIO_OType_OD(开漏)GPIOPuPd_TypeDef GPIO_PuPd; GPIO_PuPd_NOPULL(无),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)}GPIO_InitTypeDef;3.备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)* This GPIO_AF can be one of the following values:* @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset)* @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset)* @arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset)* @arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset)* @arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)* @arg GPIO_AF_TIM1: Connect TIM1 pins to AF1* @arg GPIO_AF_TIM2: Connect TIM2 pins to AF1* @arg GPIO_AF_TIM3: Connect TIM3 pins to AF2* @arg GPIO_AF_TIM4: Connect TIM4 pins to AF2* @arg GPIO_AF_TIM5: Connect TIM5 pins to AF2* @arg GPIO_AF_TIM8: Connect TIM8 pins to AF3* @arg GPIO_AF_TIM9: Connect TIM9 pins to AF3* @arg GPIO_AF_TIM10: Connect TIM10 pins to AF3* @arg GPIO_AF_TIM11: Connect TIM11 pins to AF3* @arg GPIO_AF_I2C1: Connect I2C1 pins to AF4* @arg GPIO_AF_I2C2: Connect I2C2 pins to AF4* @arg GPIO_AF_I2C3: Connect I2C3 pins to AF4* @arg GPIO_AF_SPI1: Connect SPI1 pins to AF5* @arg GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5* @arg GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6* @arg GPIO_AF_I2S3ext: Connect I2S3ext pins to AF7* @arg GPIO_AF_USART1: Connect USART1 pins to AF7* @arg GPIO_AF_USART2: Connect USART2 pins to AF7* @arg GPIO_AF_USART3: Connect USART3 pins to AF7* @arg GPIO_AF_UART4: Connect UART4 pins to AF8* @arg GPIO_AF_UART5: Connect UART5 pins to AF8* @arg GPIO_AF_USART6: Connect USART6 pins to AF8* @arg GPIO_AF_CAN1: Connect CAN1 pins to AF9* @arg GPIO_AF_CAN2: Connect CAN2 pins to AF9* @arg GPIO_AF_TIM12: Connect TIM12 pins to AF9* @arg GPIO_AF_TIM13: Connect TIM13 pins to AF9* @arg GPIO_AF_TIM14: Connect TIM14 pins to AF9* @arg GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10* @arg GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10* @arg GPIO_AF_ETH: Connect ETHERNET pins to AF11* @arg GPIO_AF_FSMC: Connect FSMC pins to AF12* @arg GPIO_AF_OTG_HS_FS: Connect OTG HS (configured in FS) pins to AF12* @arg GPIO_AF_SDIO: Connect SDIO pins to AF12* @arg GPIO_AF_DCMI: Connect DCMI pins to AF13* @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF154.使用GPIO_ReadInputData(GPIO_TypeDef* GPIOx)和GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读输入信号5.使用GPIO_SetBits()/GPIO_ResetBits()设置输出引脚6.上电或复位后,引脚备用功能都没启用(JTAG引脚除外),为悬浮输入状态7.LSE引脚OSC32_IN 和OSC32_OUT(PC14 and PC15)的优先级高于GPIO8.HSE引脚OSC_IN/OSC_OUT (PH0 / PH1)的优先级高于GPIO例程:int main(void){GPIO_InitTypeDef GPIO_InitStructure;/* GPIOG Periph clock enable */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOD, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOD, GPIO_Pin_12);GPIO_ResetBits(GPIOD, GPIO_Pin_13);while (1){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0){GPIO_SetBits(GPIOD, GPIO_Pin_13);GPIO_ResetBits(GPIOD, GPIO_Pin_12);}else{GPIO_SetBits(GPIOD, GPIO_Pin_12); GPIO_ResetBits(GPIOD, GPIO_Pin_13);}}}。

GPIO在MDK中的使用

GPIO在MDK中的使用

STM32学习(四)——GPIO在MDK中的使用使用GPIO时,我们常用到的是:stm32f10x_gpio.h和stm32f10x_gpio.h文件。

1、gpio.h介绍GPIO.H中是一些参数的定义和外部驱动的声明IS_GPIO_ALL_PERIPH(PERIPH):用来判断输入的GPIO_X是不是在范围之内IS_GPIO_SPEED(SPEED):判断GPIO的频率是不是输入正确IS_GPIO_MODE(MODE):判断输入模式是否正确IS_GPIO_BIT_ACTION(ACTION):判断位设置是否正确IS_GPIO_PIN(PIN):判断输入的IO口是不是在0-15范围内IS_GET_GPIO_PIN(PIN):判读读取IO口是否在0-15范围内typedef enum{ GPIO_Mode_AIN = 0x0,GPIO_Mode_IN_FLOATING = 0x04,GPIO_Mode_IPD = 0x28,GPIO_Mode_IPU = 0x48,GPIO_Mode_Out_OD = 0x14,GPIO_Mode_Out_PP = 0x10,GPIO_Mode_AF_OD = 0x1C,GPIO_Mode_AF_PP = 0x18}GPIOMode_TypeDef;上面这个结构体是定义了GPIO在设置时的一些参数。

其中包括有输入输出、IO模式、IO 方式等。

void GPIO_DeInit(GPIO_TypeDef* GPIOx);这个函数是用来默认设置GPIO的,只需要输入GPIO的端口号就可以了。

在GPIO.C中有详细的代码和说明。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);这个函数用来设置GPIO的管脚,我们常用到的GPIO配置程序。

GPIOx, 是要配置的端口号,GPIO_InitStruct该端口的详细配置。

GPIO使用总结

GPIO使用总结

GPIO使用总结
一、GPIO介绍
GPIO(General Purpose Input/Output,通用输入输出)是指有源半
导体器件上的一组特定的可编程引脚,可以被编程设置为输入或输出,用
于控制相应的状态或者作为触发信号或接收信号。

它可以为系统提供对外
部硬件设备的控制能力。

GPIO模块中的引脚可以被控制以提供输入或输出功能,可以连接外
部设备,可以用它控制设备的开关、驱动智能设备、触发断言、控制LED、控制传感器或触发外部时序运行。

二、GPIO应用
1.控制开关:GPIO引脚可以控制外部继电器、直流电机或其他电子
设备的动作,如关闭或打开电源、启动和停止电机、控制家电等。

2.驱动智能设备:GPIO引脚可以控制智能设备,如门锁等,以便监
控室内外的环境变化,控制设备的操作,连接传感器等。

3.控制LED:GPIO引脚可以用来控制LED灯的亮和暗,并可根据外
部条件变化调整灯光的强度和颜色。

4.控制传感器:GPIO引脚可以控制传感器,从而实现环境监测、室
内外空气质量检测和温度测量等。

5.控制外部时序:GPIO引脚可以控制外部设备的时序运行,以便实
现控制其中一种特定设备的运行和停止或定时启动和关闭。

三、GPIO的连接
GPIO的连接一般采用电阻或继电器来连接。

STM32使用BSRR和BRR寄存器快速操作GPIO端口方法说明

STM32使用BSRR和BRR寄存器快速操作GPIO端口方法说明

STM32使用BSRR和BRR寄存器快速操作GPIO端口STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。

GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x 的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。

GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。

简单地说GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。

另一个寄存器GPIOx_BRR只有低16位有效,与GPIOx_BSRR的高16位具有相同功能。

举个例子说明如何使用这两个寄存器和所体现的优势。

例如GPIOE的16个IO都被设置成输出,而每次操作仅需要改变低8位的数据而保持高8位不变,假设新的8位数据在变量Newdata中,这个要求可以通过操作这两个寄存器实现,STM32的固件库中有两个函数GPIO_SetBits()和GPIO_ResetBits()使用了这两个寄存器操作端口。

上述要求可以这样实现:GPIO_SetBits(GPIOE, Newdata & 0xff);GPIO_ResetBits(GPIOE, (~Newdata & 0xff));也可以直接操作这两个寄存器:GPIOE->BSRR = Newdata & 0xff;GPIOE->BRR = ~Newdata & 0xff;当然还可以一次完成对8位的操作:GPIOE->BSRR = (Newdata & 0xff) | (~Newdata & 0xff)<<16;从最后这个操作可以看出使用BSRR寄存器,可以实现8个端口位的同时修改操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32 GPIO使用操作步骤:使能GPIO对应的外设时钟例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC , ENABLE);声明一个GPIO_InitStructure结构体例如:GPIO_InitTypeDef GPIO_InitStructure;选择待设置的GPIO管脚例如:/* 选择待设置的GPIO7、8、9管脚位,中间加“|”符号*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;4. 设置选中GPIO管脚的速率例如:/* 设置选中GPIO管脚的速率为最高速率2MHz */GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //最高速率2MHz GPIO5. 设置选中管脚的模式*/设置选中GPIO管脚的模式为开漏输出模式/* 例如://开漏输出模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIOX中指定的参数初始化外设6. 根据GPIO_InitStructureGPIOC */ GPIO_InitStructure中指定的参数初始化外设根据例如:/*1 / 16GPIO_Init(GPIOC, &GPIO_InitStructure);7.其他应用例:将端口GPIOA的10、15脚置1(高电平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);例:将端口GPIOA的10、15脚置0(低电平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);GPIO寄存器:寄存器描述端口配置低寄存器CRL端口配置高寄存器CRH端口输入数据寄存器IDR端口输出数据寄存器ODR端口位设置BSRR /复位寄存器端口位复位寄存器BRR端口配置锁定寄存器LCKR事件控制寄存器EVCR复用重映射和调试MAPRI/O 配置寄存器EXTICR 外部中断线路0-15配置寄存器2 / 16GPIO库函数:函数名描述GPIO_DeInit 将外设GPIOx 寄存器重设为缺省值GPIO_AFIODeInit 将复用功能(重映射事件控制和EXTI设置)重设为缺省值GPIO_Init 根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器GPIO_StructInit 把GPIO_InitStruct中的每一个参数按缺省值填入GPIO_ReadInputDataBit 读取指定端口管脚的输入GPIO_ReadInputData 读取指定的GPIO端口输入GPIO_ReadOutputDataBit 读取指定端口管脚的输出GPIO_ReadOutputData 读取指定的GPIO端口输出GPIO_SetBits 设置指定的数据端口位GPIO_ResetBits 清除指定的数据端口位GPIO_WriteBit 设置或者清除指定的数据端口位GPIO_Write 向指定GPIO数据端口写入数据GPIO_PinLockConfig 锁定GPIO管脚设置寄存器GPIO_EventOutputConfig 选择GPIO管脚用作事件输出GPIO_EventOutputCmd 使能或者失能事件输出GPIO_PinRemapConfig 改变指定管脚的映射GPIO_EXTILineConfig 选择GPIO管脚用作外部中断线路库函数:函数GPIO_DeInit功能描述:将外设GPIOx寄存器重设为缺省值3 / 16例:GPIO_DeInit(GPIOA);函数GPIO_AFIODeInit功能描述:将复用功能(重映射事件控制和EXTI设置)重设为缺省值例:GPIO_AFIODeInit();函数GPIO_Init功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器例:GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitTypeDef structureGPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”:typedef struct{4 / 16u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef;GPIO_Pin该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。

可以使用下表中的任意组合。

GPIO_Pin_None:无管脚被选中选中管脚x(0--15)GPIO_Pin_x:GPIO_Pin_All:选中全部管脚GPIO_Speed用以设置选中管脚的速率。

GPIO_Speed:GPIO_Speed_10MHz:最高输出速率10MHzGPIO_Speed_2MHz:最高输出速率2MHzGPIO_Speed_50MHz:最高输出速率50MHzGPIO_ModeGPIO_Mode:用以设置选中管脚的工作状态。

模拟输入GPIO_Mode_AIN:5 / 16GPIO_Mode_IN_FLOATING:浮空输入GPIO_Mode_IPD:下拉输入上拉输入:GPIO_Mode_IPU开漏输出GPIO_Mode_Out_OD:GPIO_Mode_Out_PP :推挽输出GPIO_Mode_AF_OD:复用开漏输出GPIO_Mode_AF_PP :复用推挽输出函数GPIO_StructInit功能描述:把GPIO_InitStruct中的每一个参数按缺省值填入例:GPIO_InitTypeDef GPIO_InitStructure;GPIO_StructInit(&GPIO_InitStructure);GPIO_InitStruct:GPIO_Pin:GPIO_Pin_AllGPIO_Speed:GPIO_Speed_2MHzGPIO_Mode:GPIO_Mode_IN_FLOATING函数GPIO_ReadInputDataBit功能描述:读取指定端口管脚的输入例:6 / 16u8 ReadValue;ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);函数GPIO_ReadInputData功能描述:读取指定的GPIO端口输入例:u16 ReadValue;ReadValue = GPIO_ReadInputData(GPIOC);函数GPIO_ReadOutputDataBit功能描述:读取指定端口管脚的输出例:u8 ReadValue;ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);函数GPIO_ReadOutputData功能描述:读取指定的GPIO端口输出例:u16 ReadValue;ReadValue = GPIO_ReadOutputData(GPIOC);7 / 16函数GPIO_SetBits功能描述:置位指定的数据端口位例:将端口GPIOA的10、15脚置1(高电平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函数GPIO_ResetBits功能描述:清除指定的数据端口位例:将端口GPIOA的10、15脚置0(低电平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函数GPIO_WriteBit功能描述:设置或者清除指定的数据端口位例:GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);函数GPIO_Write功能描述:向指定GPIO数据端口写入数据例:GPIO_Write(GPIOA, 0x1101);8 / 16函数GPIO_PinLockConfig功能描述:锁定GPIO管脚设置寄存器例:GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);函数GPIO_EventOutputConfig功能描述:选择GPIO管脚用作事件输出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);GPIO_PortSourceGPIO_PortSource用以选择用作事件输出的GPIO端口。

函数GPIO_EventOutputCmd功能描述:使能或者失能事件输出例:GPIO_EventOutputConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6); GPIO_EventOutputCmd(ENABLE);函数GPIO_PinRemapConfig9 / 16功能描述:改变指定管脚的映射例:GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);一.GPIO概述1、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。

2、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。

3、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。

10 / 164、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。

这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。

相关文档
最新文档