00 GPIO的配置 & LED的点亮

1、综述

  <1> STM32F4最多有9组I/O,大多数组每组有0~15,一共有16个IO口。每组通用I/O端口由10个32位寄存器控制:
  4个32位配置寄存器(MODER,OTYPER,OSPEED,PUPDR);
  2个32位数据寄存器(IDR和ODR);
  1个32位置位/复位寄存器(BSRR);
  1个32位锁定寄存器(LCKR);
  2个32位复用功能选择寄存器(AFRH和AFRL)。


  <2>STM32F4的IO口的8中工作模式:
    浮空输入;
    输入上拉;
    输入下拉;
    模拟输入;
    开漏输出;
    推挽输出;
    推挽式复用功能;
    开漏式复用功能。


2、主要寄存器介绍

   参数配置寄存器

  (1)MODER
  用于控制GPIO的端口模式。32位寄存器,控制一组中的16个IO,那么,每两位控制一个IO。

  (2)OTYPER
  用于控制GPIO的输出类型。该寄存器仅用于输出模式,到底是推挽输出,还是开漏输出。在输入模式下不起作用。该寄存器低16位有效,每一个位控制一个IO口。复位后,该寄存器值均为0(复位后默认输出推挽)。

  (3)OSPEEDER
  用于控制GPIO的输出速度。也是在输入模式下不起作用。共32位,每两个位控制一个IO口。

  (4)PUPDR
  用于控制GPIO的上拉下拉。可以设置为:
  00:无上拉或下拉;
  01:上拉;
  10:下拉;
  11:保留。
  32位寄存器,控制一组中的16个IO,那么,每两位控制一个IO。


   输入输出电平控制相关寄存器

  (5)ODR
  用于控制GPIOx的输出,该寄存器用来设置某个IO输出低电平还是高电平,该寄存器也是仅在输出模式下有效,在输入模式下不起作用。32位寄存器,低16位有效,一位控制同一组内的一个IO口。
  (6)IDR
  用于读取GPIOx的输入,该寄存器用来读取某个IO的电平是低电平还是高电平,32位寄存器,低16位有效,一位对应同一组内的一个IO口。
  (7)BSRR
  该寄存器用来置位或者复位IO口。该寄存器有32位,高16位是BR15~BR0,用来复位;低16位是BS15~BS0,用来置位。对于BSRR寄存器,你写0的话,对IO口电平是没有任何影响的,要设置那个IO口(置位或者复位),向相应的位写1。当对于同一个IO复位置位矛盾时,置位的优先级较高。
  (8)AFRH和AFRL
  这两个寄存器用来设置IO口的复用功能。


3、库文件和头文件

  GPIO相关的函数和定义分布在固件库文件stm32f4xx_gpio.c和库文件stm32f4xx_gpio.h中。


4、初始化函数

  void GPIO_Init(GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct)
  函数在stm32f4xx_gpio.c文件中R202处定义。函数有两个参数:第一个参数是哪一组GPIO,第二个参数是一个结构体指针,配置上面的四个寄存器。


5、其他寄存器对应的常用函数

  (1)读取某个IO口的电平
  uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
  uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
  第1个函数是用来读取一组IO口中的一个或者几个IO口输入电平;第2个函数用来一次性读取一组IO口所有IO口的输入电平。<查看IDR寄存器>


  (2)设置某个IO口的电平
  void GPIO_SetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
  void GPIO_ResetBits(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
  函数在stm32f4xx_gpio.c文件中R412处定义。第1个函数是用来读取一组IO口中的一个或者几个IO口为高电平;第2个函数用来设置一组IO口所有IO口为低电平。<设置BSRR寄存器>


6、IO口的操作步骤

  (1)使能IO口时钟。调用函数
    RCC_AHB1PeriphClockCmd();

  (2)初始化IO口参数。调用函数
    GPIO_Init();

  (3)操作IO口。


7、配置实例

#include "led.h"

void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;//定义参数配置结构体
    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//使能IO口时钟
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//同时设置两个IO口
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//输出速度
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
    
    GPIO_Init(GPIOF,&GPIO_InitStructure);//初始化GPIO
    
    GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10 初始化时 设置为高电平 灯灭

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容