STM32驱动GPIO基础(标准库)

编写GPIO配置函数:

void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure; //实例化一个初始化结构体
  
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE); 	//使能对应的时钟树					 
			 
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; 
   //选择PIN,一般可选0~15
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //选择IO口速度

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //选择IO口模式

  GPIO_Init(GPIOA, &GPIO_InitStructure);            //利用标准库函数初始化GPIO
}

标准库有三种GPIO速度,分别是:

typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

标准库有八种GPIO模式,分别是:

typedef enum
{ GPIO_Mode_AIN = 0x0,           //模拟输入

  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         //推挽复用功能

}GPIOMode_TypeDef;

标准库常用RCC时钟树设置函数:

//AHB外设时钟命令
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)

//APB2外设时钟命令
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

//APB1外设时钟命令
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)


/*
AHB (Advanced High-performance Bus)高级高性能总线
APB (Advanced Peripheral Bus)高级外设总线
*/

标准库输出高低电平:

//输出高电平
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

//输出低电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

/*
*@brief   GPIO_SetBits(GPIOA , GPIO_Pin_0);
*         GPIO_ResetBits(GPIOA , GPIO_Pin_0);
*/

上述皆为简单的IO操作

若要深入研究,可以查看stm32f10x_gpio.c中的函数

对于各类协议初始化,GPIO担任着最重要的角色几乎所有于io有关的都需要定义它

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值