超经典的STM32学习笔记第一章GPIO口.docx

上传人:b****8 文档编号:8931587 上传时间:2023-05-16 格式:DOCX 页数:16 大小:59.81KB
下载 相关 举报
超经典的STM32学习笔记第一章GPIO口.docx_第1页
第1页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第2页
第2页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第3页
第3页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第4页
第4页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第5页
第5页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第6页
第6页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第7页
第7页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第8页
第8页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第9页
第9页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第10页
第10页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第11页
第11页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第12页
第12页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第13页
第13页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第14页
第14页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第15页
第15页 / 共16页
超经典的STM32学习笔记第一章GPIO口.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

超经典的STM32学习笔记第一章GPIO口.docx

《超经典的STM32学习笔记第一章GPIO口.docx》由会员分享,可在线阅读,更多相关《超经典的STM32学习笔记第一章GPIO口.docx(16页珍藏版)》请在冰点文库上搜索。

超经典的STM32学习笔记第一章GPIO口.docx

超经典的STM32学习笔记第一章GPIO口

固件库中与GPIO有关的函数主要有:

函数名

描述

GPIO_Init

根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器

GPIO_ReadInputDataBit

读取指定端口管脚的输入

GPIO_ReadInputData

读取指定的GPIO端口输入

GPIO_ReadOutputDataBit

读取指定端口管脚的输出

GPIO_ReadOutputData

读取指定的GPIO端口输出

GPIO_SetBits

设置指定的数据端口位

GPIO_ResetBits

清除指定的数据端口位

GPIO_WriteBit

设置或者清除指定的数据端口位

GPIO_Write

向指定GPIO数据端口写入数据

函数GPIO_Init

函数名

GPIO_Init

函数原形

voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)

功能描述

根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

GPIO_InitStruct:

指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息参阅Section:

GPIO_InitTypeDef查阅更多该参数允许取值范围

输出参数

返回值

先决条件

被调用函数

GPIO_TypeDef为一结构体:

typedefstruct

{

__IOuint32_tCRL;//端口配置低寄存器

__IOuint32_tCRH;//端口配置高寄存器

__IOuint32_tIDR;//端口输入数据寄存器

__IOuint32_tODR;

__IOuint32_tBSRR;

__IOuint32_tBRR;

__IOuint32_tLCKR;

}GPIO_TypeDef;

GPIOx为一宏定义:

#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)

其中GPIOA_BASE=0x40010800,即PA口的起始地址,#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)这句语句的作用就是将GPIOA指定到PA口的入口地址中,也就是说将PA口的寄存器组取名为GPIOA。

GPIO_InitTypeDef为结构体:

typedefstruct

{

uint16_tGPIO_Pin;

GPIOSpeed_TypeDefGPIO_Speed;

GPIOMode_TypeDefGPIO_Mode;

}GPIO_InitTypeDef;

其中GPIO_Pin可取的值:

GPIO_Pin

描述

GPIO_Pin_None

无管脚被选中

GPIO_Pin_0

选中管脚0

GPIO_Pin_15

选中管脚15

GPIO_Pin_All

选中全部管脚

GPIO_Speed可取的值:

GPIO_Speed

描述

GPIO_Speed_10MHz

最高输出速率10MHz

GPIO_Speed_2MHz

最高输出速率2MHz

GPIO_Speed_50MHz

最高输出速率50MHz

GPIO_Mode可取的值:

GPIO_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_Init只有两个输入参数,实则4个输入参数。

第二个结构体中包括了三个参数,这三个参数分别是对管脚的端口,速度,和模式进行配置。

这三个参数的值其实就是一些宏定义的数值。

对这三个参数的选择就相当于对对应的寄存器进行配置。

第一个结构体是寄存器映射,它定义在文件“”中,他的作用就是将与管脚有关的寄存器名字与硬件地址对应起来,例如寄存器CRL就相当于地址:

0x40010800.第一与第二个结构体相结合并可以对某端口进行初始化了。

例:

配置PA口为浮空输入

//定义一个名为GPIO_InitStructure的GPIO_InitTypeDef型结构体

GPIO_InitTypeDefGPIO_InitStructure;

//选中所有的端口

GPIO_InitStructure.Gpio_Pin=GPIO_Pin_All;

//选择端口的速度为10M

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;

//选择模式为浮空输入

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

//完成初始化

GPIO_Init(GPIOA,&GPIO_InitStructure);

函数GPIO_ReadInputDataBit

函数名

GPIO_ReadInputDataBit

函数原形

u8GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)

功能描述

读取指定端口管脚的输入

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

GPIO_Pin:

待读取的端口位

输出参数

返回值

输入端口管脚值

先决条件

被调用函数

例:

读取口的输入值

u8ReadValue;

ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);

1.3函数GPIO_ReadInputData

函数名

GPIO_ReadInputData

函数原形

u16GPIO_ReadInputData(GPIO_TypeDef*GPIOx)

功能描述

读取指定的GPIO端口输入

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

GPIO_Pin:

待读取的端口位

输出参数

返回值

GPIO输入数据端口值

先决条件

被调用函数

例:

读取PC口的输入值

U16ReadValue;

ReadValue=GPIO_ReadInputData(GPIOC);

1.4函数GPIO_SetBits

函数名

GPIO_SetBits

函数原形

voidGPIO_SetBits(GPIO_TypeDef*GPIOx,u16GPIO_Pin)

功能描述

设置指定的数据端口位

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

GPIO_Pin:

待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合

输出参数

返回值

先决条件

被调用函数

.1:

例:

设置和口为高电平

GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2);

1.5函数GPIO_RsetBits

函数名

GPIO_ResetBits

函数原形

voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,u16GPIO_Pin)

功能描述

清除指定的数据端口位

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

GPIO_Pin:

待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合

输出参数

返回值

先决条件

被调用函数

例:

设置和口为低电平

GPIO_RsetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2);

1.6函数GPIO_WriteBit

函数名

GPIO_WriteBit

函数原形

voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin,BitActionBitVal)

功能描述

设置或者清除指定的数据端口位

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

GPIO_Pin:

待设置的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合

输入参数3

BitVal:

该参数指定了待写入的值该参数必须取枚举BitAction的其中一个值Bit_RESET:

清除数据端口位Bit_SET:

设置数据端口位

返回值

先决条件

被调用函数

输出参数

例:

设置口为低电平

GPIO_WriteBit(GPIOA,GPIO_Pin_1|GPIO_Pin_2,Bit_RESET);

1.7函数GPIO_Write

函数名

GPIO_Write

函数原形

voidGPIO_Write(GPIO_TypeDef*GPIOx,u16PortVal)

功能描述

向指定GPIO数据端口写入数据

输入参数1

GPIOx:

x可以是A,B,C,D或者E,来选择GPIO外设

输入参数2

PortVal:

待写入端口数据寄存器的值

返回值

先决条件

被调用函数

输出参数

例:

向PA口写入一数据

GPIO_Write(GPIOA,0X0101);

1.8:

要初始化某端口时还需打开该端口的时钟及配置系统的时钟源,与之相关的两个函数为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE)和SystemInit();

 

2:

将GOIO口配置成外部中断的输入口

 

与NVIC相关的函数

〔1〕NVIC_PriorityGroupConfig

函数名

NVIC_PriorityGroupConfig

函数原形

VoidNVIC_PriorityGroupConfig(u32NVIC_PriorityGroup)

功能描述

设置优先级分组:

先占优先级和从优先级

输入参数

NVIC_PriorityGroup:

优先级分组位长度

参阅Section:

NVIC_PriorityGroup查阅更多该参数允许取值范围

输出参数

返回值

先决条件

优先级分组只能设置一次

被调用函数

NVIC_PriorityGroup的值:

NVIC_PriorityGroup

描述

NVIC_PriorityGroup_0

先占优先级0位

从优先级4位

NVIC_PriorityGroup_1

先占优先级1位

从优先级3位

NVIC_PriorityGroup_2

先占优先级2位

从优先级2位

NVIC_PriorityGroup_3

先占优先级3位

从优先级1位

NVIC_PriorityGroup_4

先占优先级4位

从优先级0位

〔2〕NVIC_Init

函数名

NVIC_Init

函数原形

voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)

功能描述

根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

输入参数

NVIC_InitStruct:

指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息

参阅Section:

NVIC_InitTypeDef查阅更多该参数允许取值范围

输出参数

返回值

先决条件

被调用函数

NVIC_InitTypeDefstructure

NVIC_InitTypeDef定义于文件“stm32f10x_nvic.h”:

typedefstruct

{

u8NVIC_IRQChannel;

u8NVIC_IRQChannelPreemptionPriority;

u8NVIC_IRQChannelSubPriority;

FunctionalStateNVIC_IRQChannelCmd;

}NVIC_InitTypeDef;

NVIC_IRQChannel

该参数用以指定IRQ通道。

Table272.给出了该参数可取的值

NVIC_IRQChannel

描述

WWDG_IRQChannel

窗口看门狗中断

PVD_IRQChannel

PVD通过EXTI探测中断

TAMPER_IRQChannel

篡改中断

RTC_IRQChannel

RTC全局中断

FlashItf_IRQChannel

FLASH全局中断

RCC_IRQChannel

RCC全局中断

EXTI0_IRQChannel

外部中断线0中断

EXTI9_5_IRQChannel

外部中断线9-5中断

EXTI15_10_IRQChannel

外部中断线15-10中断

NVIC_IRQChannelPreemptionPriority

该参数设置了成员NVIC_IRQChannel中的先占优先级,Table.273列举了该参数的取值。

NVIC_IRQChannelSubPriority

该参数设置了成员NVIC_IRQChannel中的从优先级,Table.273列举了该参数的取值。

Table.273给出了由函数NVIC_PriorityGroupConfig设置的先占优先级和从优先级可取的值

Table273.先占优先级和从优先级值〔1〕〔2〕

NVIC_PriorityGroup

NVIC_IRQChannel的先占优先级

NVIC_IRQChannel的从优先级

描述

NVIC_PriorityGroup_0

0

0-15

先占优先级0位

从优先级4位

NVIC_PriorityGroup_1

0-1

0-7

先占优先级1位

从优先级3位

NVIC_PriorityGroup_2

0-3

0-3

先占优先级2位

从优先级2位

NVIC_PriorityGroup_3

0-7

0-1

先占优先级3位

从优先级1位

NVIC_PriorityGroup_4

0-15

0

先占优先级4位

从优先级0位

NVIC_IRQChannelCmd

该参数指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能。

这个参数取值为ENABLE或者DISABLE。

例:

NVIC_InitTypeDefNVIC_InitStructure;

/*设置优先级分组*/

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

/*选择外部中断线15-10中断*/

NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

/*使能该通道*/

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_InitStructure(&NVIC_InitStructure);

2.2与EXTI相关的函数

〔1〕GPIO_EXTILineConfig

函数名

GPIO_EXTILineConfig

函数原形

voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)

功能描述

选择GPIO管脚用作外部中断线路

输入参数1

GPIO_PortSource:

选择用作外部中断线源的GPIO端口

参阅Section:

GPIO_PortSource查阅更多该参数允许取值范围

输入参数2

GPIO_PinSource:

待设置的外部中断线路

该参数可以取GPIO_PinSourcex(x可以是0-15)

输出参数

返回值

先决条件

被调用函数

例:

选择PA13为中断的输入口

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);

(2)EXTI_Init

函数名

EXTI_Init

函数原形

voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)

功能描述

根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

输入参数

EXTI_InitStruct:

指向结构EXTI_InitTypeDef的指针,包含了外设EXTI的配置信息参阅Section:

EXTI_InitTypeDef查阅更多该参数允许取值范围

输出参数

返回值

先决条件

被调用函数

EXTI_InitTypeDefstructure

EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”:

typedefstruct

{u32EXTI_Line;

EXTIMode_TypeDefEXTI_Mode;

EXTIrigger_TypeDefEXTI_Trigger;

FunctionalStateEXTI_LineCmd;}EXTI_InitTypeDef;

EXTI_Line

EXTI_Line选择了待使能或者失能的外部线路。

Table132.给出了该参数可取的值

EXTI_Line0

外部中断线0

……..

……..

EXTI_Line18

外部中断线18

EXTI_Mode

EXTI_Mode设置了被使能线路的模式。

Table133.给出了该参数可取的值

EXTI_Mode

描述

EXTI_Mode_Event

设置EXTI线路为事件请求

EXTI_Mode_Interrupt

设置EXTI线路为中断请求

EXTI_Trigger

EXTI_Trigger设置了被使能线路的触发边沿。

Table134.给出了该参数可取的值

EXTI_Mode

描述

EXTI_Trigger_Falling

设置输入线路下降沿为中断请求

EXTI_Trigger_Rising

设置输入线路上升沿为中断请求

EXTI_Trigger_Rising_Falling

设置输入线路上升沿和下降沿为中断请求

EXTI_LineCmd

EXTI_LineCmd用来定义选中线路的新状态。

它可以被设为ENABLE或者DISABLE。

例:

使能PA13为中断的输入通道,且下降沿触发

EXTI_InitStructure.EXTI_Line=EXTI_Line13;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿中断

/*使能中断*/

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2