对stm32f10c_gpio.c的学习

1、GPIO 寄存器

每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。
GPIOx->CRL :端口配置低寄存器
GPIOx->CRH:端口配置高寄存器
GPIOx->IDR:端口输入寄存器
GPIOx->ODR:端口输出寄存器
GPIOx->BSRR:端口位设置/清除寄存器
GPIOx->BRR :端口位清除寄存器
GPIOx->LCKR:端口配置锁存寄存器

①上拉输入、下拉输入可以用来检测外部信号;例如,按键等;
②浮空输入模式,由于输入阻抗较大,一般把这种模式用于标准通信协议的I2C、USART的接收端;
③普通推挽输出模式一般应用在输出电平为0和3.3V的场合。而普通开漏输出模式一般应用在电平不匹配的场合,如需要输出5V的高电平,就需要在外部一个上拉电阻,电源为5V,把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V电平。
④对于相应的复用模式(复用输出来源片上外设),则是根据GPIO的复用功能来选择,如GPIO的引脚用作串口的输出(USART/SPI/CAN),则使用复用推挽输出模式。如果用在I2C、SMBUS这些需要线与功能的复用场合,就使用复用开漏模式。
⑤在使用任何一种开漏模式时,都需要接上拉电阻。
————————————————
版权声明:本文为优快云博主「聚优致成」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_29350001/article/details/80681244
————————————————
1.void GPIO_DeInit(GPIO_TypeDef* GPIOx)

功能:将GPIOx外设寄存器初始化为默认值

注释:判断GPIOx具体为哪个端口,再通过操作RCC_APB2RSTR(APB2外设复位寄存器)对其寄存器进行复位

例如:GPIO_DeInit(GPIOA);

2.void GPIO_AFIODeInit(void)

功能:将复用功能(重映射与EXTI设置)重设为默认值

注释:通过操作RCC_APB2RSTR(APB2外设复位寄存器)对其寄存器进行复位

例如:GPIO_AFIODeInit();

3.void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

功能:按照GPIO_InitStruct结构体变量所配置的参数来初始化GPIOx寄存器

注释:将结构体内成员所赋的值取出并赋给对应的寄存器

例如:GPIO_Init(GPIOA,&GPIO_InitStructure);

4.void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)

功能:将GPIO结构体各个成员填充为默认值

注释:未涉及寄存器操作,直接向结构体成员赋默认值

例如:GPIO_StructInit(&GPIO_InitStructure);

5.uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

功能:读取指定端口引脚的输入电平,针对Pin

注释:通过访问GPIOx_IDR(端口输入数据寄存器)可获知某一引脚的输入电平

例如: ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);

6.uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)

功能:读取指定GPIO端口的输入电平,针对Port

注释:通过访问GPIOx_IDR(端口输入数据寄存器)可获知某一端口的输入电平

例如:ReadValue = GPIO_ReadInputData(GPIOC);

7.uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

功能:读取指定端口引脚的输出电平,针对Pin

注释:通过访问GPIOx_ODR(端口输出数据寄存器)可获知某一引脚的输出电平

例如:ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);

8.uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)

功能:读取指定GPIO端口的输出电平,针对Port

注释:通过访问GPIOx_ODR(端口输出数据寄存器)可获知某一端口的输出电平

例如:ReadValue = GPIO_ReadOutputData(GPIOC);

9.void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

功能:设置选定的数据端口位,置“1”,一个或多个

注释:使用GPIOx_BSRR的端口位设置功能来达到设置引脚输出为“1”的目的,BSRR同样具备BRR功能

例如:GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);

10.void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

功能:清除指定的数据端口位,清“0”,一个或多个

注释:通过操作BRR寄存器来实现端口引脚的低电平输出

例如:GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);

11.void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)

功能:对某一个端口管脚实现清“0”或置“1”操作,一个

注释:判断电平,进而对应操作BRR或者BSRR

例如:GPIO_WriteBit(GPIOA, GPIO_Pin_15, 1);

12.void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)

功能:向某一端口写入指定数据

注释:将数据写入GPIOx_ODR寄存器,ODR可读可写,但只能字操作

例如:GPIO_Write(GPIOA, 0x1234);

13.void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

功能:锁定GPIO管脚的配置,下次系统复位之前将不能再更改端口位的配置,一个或多个

注释:根据键写入序列,通过操作LCKK与LCKx来进行设置

例如:GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);

14.void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)

功能: 选择GPIO管脚用作事件输出

注释:对AFIO_EVCR的操作

例如:GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);

15.void GPIO_EventOutputCmd(FunctionalState NewState)

功能:使能或失能事件输出

注释:与GPIO_EventOutputConfig配合使用

例如:GPIO_EventOutputCmd(ENABLE);

16.void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)

功能:改变管脚映射

注释:没有重映像,部分重映像,完全重映像

例如:GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);

17.void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)

功能:选择GPIO管脚作为中断线路

注释:16个管脚占用了4个寄存器

例如:GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8);

18.void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)

功能:选择以太网媒体接口

注释:未知

例如:GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_MII);
————————————————
版权声明:本文为优快云博主「我吃了你的作业」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/sinat_42513925/article/details/81324222

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值