STM32中使用GPIO的总结(超强)

合集下载

STM32各模块总结

STM32各模块总结

STM32各模块总结STM32是STMicroelectronics(意法半导体)公司推出的一款32位ARM内核的微控制器系列。

它广泛应用于工业自动化、消费电子、医疗设备、智能家居等领域。

STM32系列拥有丰富的功能模块,下面将对常用的几个模块进行总结。

1.GPIO模块:GPIO是通用输入输出模块,用于连接和控制外部设备。

STM32的GPIO模块支持多种输入输出模式,包括输入、输出、开漏输出、复用功能等。

它支持中断和事件触发,并且可以配置外部信号中断触发的方式。

GPIO模块是STM32的基础模块,可以实现与其他模块的通信和控制。

2.UART模块:UART是通用异步收发传输模块,用于与其他设备进行串行通信。

STM32的UART模块支持多种传输速率和数据位数,可以实现可靠的数据传输。

它还支持硬件流控制功能,可以实现数据的流畅传输。

UART模块可以用于与电脑、传感器、显示屏等外部设备进行通信。

3.ADC模块:ADC是模数转换器模块,用于将模拟信号转换为数字信号。

STM32的ADC模块支持多种输入电压范围和精度,可以实现高精度的模拟信号采集。

它还支持多通道采集和DMA传输功能,提高了数据采集的效率。

ADC模块可以用于传感器的数据采集、模拟信号的处理等应用。

4.TIM模块:TIM是定时器模块,用于产生定时和脉冲信号。

STM32的TIM模块支持多种定时器模式和计数模式,可以实现多种定时、计数和PWM输出功能。

它还支持中断和事件触发功能,可以实现精确的时间控制。

TIM模块广泛应用于PWM调速、定时测量、脉冲计数等应用。

5.SPI模块:SPI是串行外设接口模块,用于与外部设备进行高速的全双工串行通信。

STM32的SPI模块支持多种工作模式和数据传输速率,可以实现可靠的数据传输。

它还支持硬件流控制功能,可以实现数据的流畅传输。

SPI模块常用于与存储器、传感器、显示屏等外部设备进行通信。

6.I2C模块:I2C是双线串行总线模块,用于与多个外部设备进行通信。

STM32库函数功能详解

STM32库函数功能详解

STM32库函数功能详解STM32是一款广泛应用于嵌入式系统中的微控制器系列,由意法半导体(STMicroelectronics)开发。

它具有高性能、低功耗和丰富的外设功能,广泛应用于各种应用领域。

为了方便开发者进行快速开发和简化编程流程,STM32提供了一系列库函数,本文将对其功能进行详细解析。

1.GPIO库函数:GPIO库函数用于配置STM32的通用输入输出口(GPIO)功能,包括输入、输出模式的配置和读写操作。

通过GPIO库函数,开发者可以方便地读取外部输入信号、控制外部设备的输出。

例如,使用GPIO库函数可以简单地配置一个引脚为输入模式,并读取其电平状态,或者配置一个引脚为输出模式,并设置其输出电平。

2.EXTI库函数:EXTI库函数用于配置STM32的外部中断(EXTI)功能,可以实现对外部事件的中断响应功能。

通过EXTI库函数,开发者可以方便地配置外部中断的触发方式和优先级,以及处理中断事件。

例如,使用EXTI库函数可以配置一个引脚为上升沿触发模式,并在引脚触发中断时执行相应的中断服务函数。

3.RCC库函数:RCC库函数用于配置和控制STM32的时钟系统(RCC),包括各个外设模块和系统时钟的配置。

通过RCC库函数,开发者可以方便地配置STM32的时钟源、时钟分频和时钟使能。

例如,使用RCC库函数可以配置系统时钟为指定频率,以及使能和配置外设时钟。

4.NVIC库函数:NVIC库函数用于配置和控制STM32的中断控制器(NVIC)功能,包括中断向量表和中断优先级的配置。

通过NVIC库函数,开发者可以方便地配置中断向量表和中断优先级,以及控制中断的使能和屏蔽。

例如,使用NVIC库函数可以配置一个外部中断的优先级和使能状态,以及控制中断的屏蔽和释放。

5.ADC库函数:ADC库函数用于配置和控制STM32的模数转换器(ADC)功能,可以实现模拟信号的数字化转换。

通过ADC库函数,开发者可以方便地配置ADC的转换通道、采样速率和转换模式。

gpio实验报告总结

gpio实验报告总结

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

stm32GPIO口工作原理详细解释

stm32GPIO口工作原理详细解释

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”,就代表着不兼容5V。

STM32中GPIO的8种工作模式

STM32中GPIO的8种工作模式

在Cortex-M3里,对于GPIO的配置种类有8种之多:(1)GPIO_Mode_AIN模拟输入(2)GPIO_Mode_IN_FLOATING浮空输入(3)GPIO_Mode_IPD下拉输入(4)GPIO_Mode_IPU上拉输入(5)GPIO_Mode_Out_OD开漏输出(6)GPIO_Mode_Out_PP推挽输出(7)GPIO_Mode_AF_OD复用开漏输出(8)GPIO_Mode_AF_PP复用推挽输出对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。

因此,在这里做一个总结:推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。

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

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

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

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

详细理解:如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。

对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。

当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。

这样一来,输出高低电平时,VT3 一路和VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。

又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。

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

开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).开漏形式的电路有以下几个特点:1. 利用外部电路的驱动能力,减少IC内部的驱动。

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控制器编程来实现。

使用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引脚,并进行初始化。

stm32 gpio中断 引脚 电平状态 -回复

stm32 gpio中断 引脚 电平状态 -回复

stm32 gpio中断引脚电平状态-回复STM32是一款广泛使用的32位单片机系列,具备强大的性能和丰富的外设功能,其中GPIO(General Purpose Input/Output)引脚是其最基本的输入输出接口之一。

在STM32中,GPIO引脚可以通过中断机制来实现对电平状态的检测和响应。

本文将一步一步介绍STM32 GPIO中断引脚的原理、配置和应用场景。

一、引脚中断基本原理在STM32的GPIO引脚中,每个引脚都有自己的控制寄存器和状态寄存器。

通过设置相关的寄存器值,可以控制引脚的输入输出模式以及电平状态的检测。

当引脚的电平状态发生变化时,会触发GPIO中断并执行相应的中断服务程序。

1.1 引脚控制寄存器引脚控制寄存器用于配置引脚的输入输出模式、上拉/下拉电阻以及引脚输出的初始电平状态。

通过设置寄存器的位值,可以控制引脚的多种状态。

1.2 引脚状态寄存器引脚状态寄存器用于读取引脚的电平状态。

当引脚的电平状态发生变化时,状态寄存器的相应位会被置位,表示引脚中断发生。

1.3 外部中断控制器外部中断控制器用于管理GPIO引脚中断的触发条件和优先级。

可以通过设置相应的寄存器值,来配置引脚的触发模式(上升沿、下降沿、边沿等)以及中断的优先级。

二、引脚中断配置步骤为了使用GPIO引脚中断,需要按照以下步骤进行配置:2.1 GPIO引脚初始化首先,需要初始化GPIO引脚的功能和模式。

可以通过设置引脚控制寄存器的位值,来配置引脚的输入输出模式和上拉/下拉电阻。

例如,可以将引脚设置为输入模式,并启用上拉电阻,以便检测外部信号引脚的电平状态。

2.2 外部中断配置接下来,需要配置外部中断控制器,以确定引脚中断的触发条件和优先级。

可以通过设置中断控制寄存器的位值,来配置引脚的触发模式。

例如,可以将引脚设置为上升沿触发模式,表示仅在引脚电平上升沿触发中断。

2.3 中断服务程序编写当引脚的电平状态发生变化并触发中断时,系统会自动跳转到相应的中断服务程序执行相应的操作。

gpio实验心得

gpio实验心得

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

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

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

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

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

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

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

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

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

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

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

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

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

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

因此,我认为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);}}}。

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输出-流水灯实验报告
1.实验目的
通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容
工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
3.实验环境
Windouws10 Keil uVision5
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);
实验日期:2018年10月18日
成绩评定
教师签名:
年月日
Welcome To
Download !!!
2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称gpio输出流水灯1实验目的通过一个经典的跑马灯程序了解stm32f1的io口作为输出使用的方法
课程实验报告
学院:专业:2018年10月18日
姓名
学号
班级
指导老师
课程名称
嵌入式系统原理与应用实验


实验名称
GPIO输出-流水灯
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_Init(GPIOC, &GPIO_InitStructure);
4. 实验方法和步骤(含设计)
(1)实验硬件连接图

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)。

STM32中使用GPIO的总结(超强)

STM32中使用GPIO的总结(超强)

STM32 GPIO使用操作步骤:1.使能GPIO对应的外设时钟例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC , ENABLE);2.声明一个GPIO_InitStructure结构体例如:GPIO_InitTypeDef GPIO_InitStructure;3.选择待设置的GPIO管脚例如:/* 选择待设置的GPIO第7、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; //最高速率2MHz5.设置选中GPIO管脚的模式例如:/* 设置选中GPIO管脚的模式为开漏输出模式*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出模式6. 根据GPIO_InitStructure中指定的参数初始化外设GPIOX例如:/* 根据GPIO_InitStructure中指定的参数初始化外设GPIOC */ GPIO_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 事件控制寄存器MAPR 复用重映射和调试I/O 配置寄存器EXTICR 外部中断线路0-15配置寄存器GPIO库函数:函数名描述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寄存器重设为缺省值例: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{u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef;GPIO_Pin该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。

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 gpio中断 引脚 电平状态

stm32 gpio中断 引脚 电平状态

标题:STM32 GPIO中断引脚电平状态分析与应用一、概述STM32是一款广泛应用于嵌入式系统的芯片,并且具有丰富的外设功能。

在实际应用中,GPIO中断引脚的电平状态对于系统的稳定性和可靠性至关重要。

本文将以STM32 GPIO中断引脚电平状态为主题,分析其原理和应用。

二、STM32 GPIO中断1. 概述STM32芯片具有丰富的GPIO外设,可以方便地实现对外部事件的响应。

其中,GPIO中断是一种常用的外部事件触发机制,通过配置GPIO中断引脚可以实现对外部信号的实时监测和响应。

2. 原理GPIO中断引脚与外部信号相连,当外部信号发生变化时,引脚的电平状态也会相应改变。

通过配置中断触发条件和中断处理函数,可以实现对外部信号的及时响应。

3. 应用在实际应用中,GPIO中断可以用于监测外部开关、传感器等设备的状态变化,以及实现对设备的控制和调度。

通过合理配置中断引脚和中断处理函数,可以提高系统的稳定性和可靠性。

三、GPIO中断引脚的电平状态1. 低电平触发当GPIO中断引脚的电平由高变低时,触发中断。

这种触发方式适用于外部信号为低电平有效的场景,例如按键开关、传感器触发等。

2. 高电平触发当GPIO中断引脚的电平由低变高时,触发中断。

这种触发方式适用于外部信号为高电平有效的场景,例如光电传感器、红外遥控器等。

3. 双边沿触发当GPIO中断引脚的电平由低变高或由高变低时,均触发中断。

这种触发方式适用于外部信号为双边沿触发的场景,例如旋转编码器、电机霍尔传感器等。

四、GPIO中断引脚电平状态的配置与实现1. 配置在STM32芯片中,通过配置GPIO中断引脚的模式、触发条件和中断优先级等参数,可以实现对中断的灵活控制。

具体配置方法可以参考STM32的冠方文档和相关资料。

2. 实现在实际应用中,可以通过编写中断处理函数,实现对中断事件的响应和处理。

在中断处理函数中,可以根据中断引脚的电平状态进行相应的逻辑判断和操作,实现对外部信号的实时监测和控制。

(1)STM32使用HAL库操作GPIO

(1)STM32使用HAL库操作GPIO

(1)STM32使⽤HAL库操作GPIO⼀初始化GPIO使⽤HAL库的优点在于不⽤⼿动添加初始化的代码了,CubeMX会根据软件设置⾃动⽣成。

⾃动⽣成的HAL库GPIO初始化代码:static void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct;/* GPIO Ports Clock Enable */__HAL_RCC_GPIOH_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET);/*Configure GPIO pin : PD11 */GPIO_InitStruct.Pin = GPIO_PIN_11;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);/*Configure GPIO pins : PD12 PD13 PD14 PD15 */GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);}顺序:(1)定义结构体变量。

GPIO使用总结

GPIO使用总结

GPIO使⽤总结⼀、GPIO重要概念要想操作GPIO引脚,需要先把所⽤引脚配置成GPIO功能,这个通过pinctrl⼦系统来实现。

然后可以根据设置的引脚的⽅向来读取引脚的值和设置输出值。

GPIO⼦系统存在之前,我们驱动需要在代码中配置寄存器来使⽤GPIO引脚。

再BSP⼯程师实现好GPIO⼦系统后,我们就可以在设备树中指定GPIO引脚,在驱动中使⽤GPIO⼦系统的标准函数来获取GPIO、设置GPIO⽅向、读取/设置GPIO的值。

这样的驱动代码是于单板⽆关的。

⼆、GPIO内核相关⽂档Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txtDocumentation\gpio\gpio.txtDocumentation\devicetree\bindings\gpio\gpio.txt三、GPIO设备树配置1. BSP⼯程师实现的gpio驱动,驱动⼯程师直接在设备树中配置使⽤。

//client节点device {led-gpios = <组, 哪个⼏个,flag>; //"组"是必须要有的元素,为gpio控制器的描述,这⾥除了组之外还有⼏个域是由组中的#gpio-cells的值决定的。

};//service端,设备树中对⼀个gpio控制器的表⽰:gpio1 {......gpio-controller;#gpio-cells = <2>; //表⽰client使⽤gpio1这⼀组中的某个引脚时,除了组之外还需要使⽤2个整数来表⽰。

};2. 举个例⼦:foo_device {compatible = "acme,foo";......led-gpios = <&gpio 15 GPIO_ACTIVE_HIGH> /*red*///⼀般这⾥可能为&gpioX<&gpio 16 GPIO_ACTIVE_HIGH> /*green*/<&gpio 17 GPIO_ACTIVE_HIGH>; /*blue*/power-gpios = <&gpio, 1 GPIO_ACTIVE_LOW>; //注意这⾥使⽤了avtive_low属性了};驱动代码中:gpiod_get_index(dev, "led", 0, GOIOD_OUT_HIGH); //取出设备树中名为led的gpio中的第0个引脚,也就是red。

  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管脚例如:/* 选择待设置的GPIO78、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 5. 设置选中GPIO管脚的模式例如:/* 设置选中GPIO管脚的模式为开漏输出模式*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出模式6. 根据GPIO_InitStructure中指定的参数初始化外设GPIOX例如:/* 根据GPIO_InitStructure中指定的参数初始化外设GPIOC */ GPIO_Init(GPIOC, &GPIO_InitStructure);7.其他应用例:将端口GPIOA的0、15脚置1(高电平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);例:将端口GPIOA的0、15脚置0(低电平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);GPIO寄存器:寄存器描述CRL 端口配置低寄存器CRH 端口配置高寄存器IDR 端口输入数据寄存器ODR 端口输出数据寄存器BSRR 端口位设置/复位寄存器BRR 端口位复位寄存器LCKR 端口配置锁定寄存器EVCR 事件控制寄存器MAPR 复用重映射和调试I/O 配置寄存器EXTICR 外部中断线路0-15配置寄存器GPIO库函数:函数名描述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寄存器重设为缺省值例: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{u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef;GPIO_Pin该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。

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

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

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

GPIO_Mode_AIN:模拟输入GPIO_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功能描述:读取指定端口管脚的输入例:u8 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);函数GPIO_SetBits功能描述:置位指定的数据端口位例:将端口GPIOA的0、15脚置1(高电平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函数GPIO_ResetBits功能描述:清除指定的数据端口位例:将端口GPIOA的0、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);函数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_PinRemapConfig功能描述:改变指定管脚的映射例: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口都可以作为外部中断的输入,便于系统灵活设计。

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

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

相关文档
最新文档