((GPIO_TypeDef *) GPIOA_BASE)表示将GPIOA_BASE强制转换为指针类型的结构体, #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) 表示用(GPIO_TypeDef *) GPIOA_BASE代替GPIOA ,那么现在GPIOA就表示以 GPIOA_BASE为基地址的一个类型为GPIO_TypeDef结构体的一个指针,所以你程序里可以用GPIOA->CRL。

例如:

#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)

typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;//除了定义结构体,它还把寄存器做了一个映射,映射到地址

那代码

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PB,PE端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PB.5 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO口速度为50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
 GPIO_SetBits(GPIOA,GPIO_Pin_8); //PB.5 输出高

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;     //LED1-->PE.5 端口配置, 推挽输出
 GPIO_Init(GPIOD, &GPIO_InitStructure);   //推挽输出 ,IO口速度为50MHz
 GPIO_SetBits(GPIOD,GPIO_Pin_2);  //PE.5 输出高 
}

中GPIOA就是一个指向结构的指针,也就是首地址。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)的一些理解相关推荐

  1. LInux命令行参数

    原创: Linux 微知识 在大学里面,老师一般会这样教,定义main 函数应该是这样的: 甚至是这样的: 但是其实在 Linux 下,一个正确的main 函数应该被定义为如下: 大家可以看到,mai ...

  2. STM32 GPIO_INIT()库函数的程序含义

    STM32 GPIO一共有七个寄存器:CRL.CRH.IDR.ODR.BSRR.BRR.LCKR 具体功能不再赘述,正点原子的库函数开发指南以及STM32参考手册中都有详细的讲解,网上也有很多大佬通俗 ...

  3. GPIO_init()函数初始化详解

    目录 1.GPIO_init()函数初始化示例 1.1 GPIO_InitTypeDef 1.2 GPIO_Init(GPIOB, &GPIO_GPIO_InitStructure) 1.3 ...

  4. STM32F 103C8T6开发板 点亮LED灯

    每组IO口含下面7个寄存器.7个寄存器可以控制一组GPIO的16个IO口. GPIOx_CRL:端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ ...

  5. stm32阶段总结笔记一

    第一阶段总结笔记,主要对GPIO,串口,时钟,中断,定时器进行总结,方便后续写程序快速查阅,寄存器用来了解库函数具体怎么配置的 文章目录 一.GPIO 寄存器 库函数操作 二.中断 外部中断 寄存器 ...

  6. 【STM32】GPIO相关函数和类型

    00. 目录 文章目录 00. 目录 01. GPIO固件库概述 02. GPIO相关类型 03. GPIO相关宏 04. GPIO相关函数 05. GPIO其它相关 06. 附录 07. 声明 01 ...

  7. 解读STM32标准库的程序架构 - 以GPIO操作为例

    前言 在开发新产品时,想必大家都曾像我一样碰到过一时难以解决的技术难题,在苦恼和无助中,只得求助于互联网,如果在网上突然发现有此问题相关的解决办法,以此解决了困扰了一整天甚至好几天的问题,这时大家的心 ...

  8. c++ 结构体初始化_STM32入门系列-使用库函数点亮LED,LED初始化函数

    要点亮LED,需要完成LED的驱动, 在工程模板上新建一个led.c和led.h文件,将其存放在led文件夹内.这两个文件需要我们自己编写. 通常xxx.c文件用于存放编写的驱动程序,xxx.h文件用 ...

  9. STM32——GPIO(2)

    STM32--GPIO 宗旨:技术的学习是有限的,分享的精神是无限的. /* GPIO_InitTypeDef结构体 */ typedef enum {GPIO_Speed_10MHz = 1, // ...

最新文章

  1. python编码规范手册-python 编码规范整理
  2. MVP on Android
  3. .net随笔-vb.net 剪粘板(1)
  4. unity 解决乱码_Unity3d中IOS应用出现乱码怎么办?
  5. 个人学习进度条------第八周
  6. SAP Commerce Cloud,通过 ycommercewebservices OCC APIs 进行结账的一个技术限制
  7. fread函数和fwrite函数,read,write
  8. R7-1 What is a computer? (5 分)
  9. Maven创建的Web项目无法使用EL表达式
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的体育场地预约管理系统
  11. 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
  12. 机器学习-监督学习之分类算法:K近邻法 (K-Nearest Neighbor,KNN)
  13. html标签的补充—— b,strong标签
  14. Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
  15. endnote修改正文中参考文献标注_Endnote之文献标注
  16. 【系】微信小程序云开发实战坚果商城-云开发开篇
  17. 分享一波前端开发也需要知道的关于 Centos、Docker、Nginx、Node、Jenkins的相关知识...
  18. Scrapy新手入门
  19. julia换源(更换国内镜像站)
  20. geotools 计算两个经纬度点之间的距离

热门文章

  1. SHOP++源码部署说明:
  2. 怎么通过邮箱发超大附件?介绍一种基于云服务的方法
  3. Android FragmentManage FragmentTransaction介绍
  4. Websocket协议的学习、调研和实现
  5. Spark不是唯一,三种新兴的开源数据分析工具
  6. Win7下VS2008升级补丁
  7. Ext.DomHelper类的使用示例(内容操作)
  8. python中json模块读写数据
  9. GOPROXY环境变量中direct的含义与用途
  10. Hadoop Yarn任务优先级(作业优先级、应用优先级)设置