STM32库函数GPIO口开发
STM32库函数GPIO口开发
 资料参考正点原子F1开发资料
GPIO重要函数:

重要函数详解:
1个初始化函数:
void GPIO_Init(GPIO_TypeDef GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);*
 
 使用方式:
 GPIO_Init(GPIOB, &GPIO_InitStructure); 库的原理:
 1、先定义一个结构体,(方便多次定义端口)
 
 上面创建一个结构体,用他来创建一个结构体:GPIO_InitTypeDef GPIO_InitStructure;
 2、配置结构体
 将结构体内部对应的成员赋值;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置;范围:0~15;
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //推挽输出
																					 //对应方式:
																					 //GPIO_Mode_AIN = 0x00, 模拟输入
																					 //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 复用推挽
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz  、2MHZ 、10MHZ
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 
2个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin);*
 作用:读取某个GPIO的输入电平。实际操作的是GPIOx_IDR寄存器。
 例如:
 GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);//读取GPIOA.5的输入电平,第一个是定义哪一个组。第二个是定义哪一个口
uint16_t GPIO_ReadInputData(GPIO_TypeDef GPIOx);*
 作用:读取某组GPIO的输入电平。实际操作的是GPIOx_IDR寄存器。
 例如:
 GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平,返回一个16位值
2个读取输出电平的函数:与上面一样
uint8_t GPIO_ReadOutputDataBit (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
 作用:读取某个GPIO的输出电平。实际操作的是GPIO_ODR寄存器。
 例如:
 GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5);//读取GPIOA.5的输出电平
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
 作用:读取某组GPIO的输出电平。实际操作的是GPIO_ODR寄存器。
 例如:
 GPIO_ReadOutputData(GPIOA);//读取GPIOA组中所有io口输出电平
4个设置输出电平的函数:
void GPIO_SetBits(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin);*
 作用:设置某个IO口输出为高电平(1)。实际操作BSRR寄存器
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
 作用:设置某个IO口输出为低电平(0)。实际操作的BRR寄存器。
void GPIO_WriteBit(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin, BitAction BitVal);*
 void GPIO_Write(GPIO_TypeDef GPIOx, uint16_t PortVal);*
 这两个函数不常用,也是用来设置IO口输出电平。
eg:
 跑马灯例程:
 1、使能IO口时钟。
 调用函数RCC_APB2PeriphColckCmd();(不同IO组,调用时钟使能不一样)
 2、初始化IO口模式。
 调用函数:GPIO_Init();
 3、操作IO口,输出高低电平。
 GPIO_SetBits();
 GPIO_ResetBits();
文章来源: blog.csdn.net,作者:JeckXu666,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_45396672/article/details/102859101
- 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)