[应用相关] STM32之GPIO

[复制链接]
 楼主| features 发表于 2020-2-7 15:13 | 显示全部楼层 |阅读模式
上一篇已经设置好时钟了,哈哈,时钟设置好不能让CPU闲着呢,让它点灯吧(编程中的hello world)



好了,大家可能接触过51单片机,但是再接触STM32后就感觉GPIO不像以前那样了,不要迷惑,为什么要一样呢,它又不是51。



那GPIO得内部结构图我觉得就没有必要看了,咱就单从功能层面来了解吧(原因之一本人对电路不是很来电)


 楼主| features 发表于 2020-2-7 15:14 | 显示全部楼层
GPIO集中模式如下:

128075e3d0e4b219e1.png





现在每种模式都说一下也记不住(其实我也不全知道),以后学习用到再补充吧

常用的就是Input floating和Output push-pull
 楼主| features 发表于 2020-2-7 15:14 | 显示全部楼层
现在看下关于GPIO的寄存器:

678575e3d0e63d18ea.png
 楼主| features 发表于 2020-2-7 15:15 | 显示全部楼层
如果不用库这些你必须得熟练使用,咱这使用库只要先简单了解下

这些寄存器在stm32f10x.h中有定义,我们看下

464905e3d0e79b6e62.png

至于他们的功能去查数据手册吧
 楼主| features 发表于 2020-2-7 15:15 | 显示全部楼层
用库我们都知道,好多模块的配置都是使用结构体来完成的,那我们来看下GPIO的模块的结构体(不包含AFIO)

203595e3d0ea17b887.png

 我们只是列举这一个,另外的类似,GPIO_Speed和GPIO_Mode自己在stm32f10x_gpio.h中找吧

相应的模块在stm32f10x_xxx.h中查找
 楼主| features 发表于 2020-2-7 15:16 | 显示全部楼层
其实说的再多也没用,还是动手吧(RCC_Configuration()函数我们上一篇已经写了在这就不写了)

  1. void GPIO_Configuration(void)
  2. {

  3.          
  4.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //后加的,开启GPIOB的时钟

  5.          GPIO_InitTypeDef GPIO_InitStructure;                               //定义一个存放配置参数的结构体

  6.  

  7.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                       //GPIOB_Pin_5
  8.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽输出
  9.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //输出速率,根据实际需要选择

  10.  

  11.          GPIO_Init(GPIOB,&GPIO_InitStructure);


  12.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                      //GPIOB_Pin_15
  13.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_IPU;       //上拉输入

  14.          GPIO_Init(GPIOB,&GPIO_InitStructure);                               //用结构体配置GPIO

  15. }
 楼主| features 发表于 2020-2-7 15:16 | 显示全部楼层
看完不觉得少点东西吗?确实是少了,配置时钟时我们曾说过在使用一个模块式要先开启对应的时钟

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

还有一点,STM32的GPIO可以通过两个寄存器进行位操作,在库中也有相应的函数,我们将库中与GPIO相关的函数列在下边

  648515e3d0ee842adc.png

查看以上的函数你就知道怎么样使用GPIO了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

463

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部