一.GPIO8种输入输出模式
模拟输入(GPIO_Mode_AIN):将物理信号(例如:声音、光线等)转换成模拟数字,多用于ADC模数转换。
浮空输入(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):一个引脚配置为推挽输出并且可以与多个功能复用。
二.3种开关端口方法
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //低电平(0) 开
GPIO_SetBits(GPIOA,GPIO_Pin_0); //高电平(1) 关
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //低电平(0) 开
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0); //低电平(0) 开
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); //高电平(1) 关
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1); //高电平(1) 关
GPIO_Write(GPIOA,~0x0001);
. . .
GPIO_Write(GPIOA,~0x0008);//用于流水灯
三.代码实现
1.LED闪烁
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
//开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//GPIOA选择APB2时钟
//初始化GPIO结构体变量
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;//输出模式选择推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//引脚接PA0端口
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz ;//速度选择50MHz
GPIO_Init(GPIOA ,&GPIO_InitStructure);
//开灯
// GPIO_ResetBits(GPIOA,GPIO_Pin_0);//端口输出低电平 0
//关灯
// GPIO_SetBits(GPIOA,GPIO_Pin_0);//端口输出高电平 1
//开灯
// GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//端口输出低电平 0
//关灯
// GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//端口输出高电平 1
while(1)
{
// 第一种LED闪烁
// GPIO_ResetBits(GPIOA,GPIO_Pin_0);//开灯
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_0);//关灯
// Delay_ms(500);
//