一、stm32库函数 GPIO点亮第一个LED灯

先把我的工程给出来

工程上传到了我的github上了,点此进入
我用的芯片型号是stm32f103c8t6

使能时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
它是用来启用或禁用高速APB (APB2)外围时钟的函数

stm32 GPIO的初始化

stm32 GPIO的初始化实际上就是一个结构体
GPIO_InitTypeDef GPIO_InitStructure;这是一个重命名结构体
进入GPIO_InitTypeDef
在这里插入图片描述
这是一个typedef类型的结构体,有三个成员,分别对应要配置的GPIO引脚;指定所选引脚的速度;指定所选引脚的操作模式。
GPIO_Speed与GPIO_Mode又分别是两个枚举类型变量,我们进去GPIOSpeed_TypeDef与GPIOMode_TypeDef
在这里插入图片描述
在这里插入图片描述
注意这里是枚举类型而不是结构体类型

定义好初始化的结构体后就是根据结构体初始化GPIO参数,调用GPIO_Init(GPIOC,&GPIO_InitStructure); 就OK,具体就是一堆寄存器的配置,可以进去看看
在这里插入图片描述
综上,初始化函数如下

void LED_Init(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
 
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; 
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;  
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;  
 GPIO_Init(GPIOC,&GPIO_InitStructure);
 
 GPIO_SetBits(GPIOC,GPIO_Pin_13); 
}

然后在main函数里定义LED_Init();

int main()
{
 LED_Init();
 while(1)
 {
  GPIO_ResetBits(GPIOC,GPIO_Pin_13); 
 }
}

关于GPIO的操作

我们打开stm32f10x_gpio.h可以看到

在这里插入图片描述
或者

在这里插入图片描述
在这里插入图片描述
都可以进去看看函数的定义
常用的有
GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);读取某一指定引脚的输入值(高电平/低电平)
GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);将某一引脚设为输出高电平
GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);将某一引脚设为输出低电平
GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);将某一引脚设为输出 高/低 电平

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值