找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1746|回复: 9
收起左侧

关于stm32标准库的小小疑问

[复制链接]
ID:329253 发表于 2018-8-2 17:00 来自手机 | 显示全部楼层 |阅读模式
82黑币
stm32新手上路,请各位帮助帮助
一个关于stm32标准库的小小疑问。
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
这是标准库中GPIOA的宏定义
void GPIO_DeInit(GPIO_TypeDef* GPIOx)这是标准库中的一个函数
  就是想问一下这个函数里边的参数,比如说要传GPIOA那这个函数里边参数不就是GPIO_TypeDef* GPIOA吗,这个GPIOA再换成那个宏定义,最后不就变成GPIO_TypeDef*(GPIO_TypeDef* GPIOx)了吗,这样符合吗?麻烦看见的各位回答一下吧,想不明白

回复

使用道具 举报

ID:381947 发表于 2018-8-2 22:47 | 显示全部楼层
这是强制类型转换,不转换的话对于cpu来说你的gpio地址只是一个常量,转化成指针类型,通过指针来对指针指向的地址上的值进行改变,你那个宏定义的转化是钻了c语言的牛角尖

评分

参与人数 1黑币 +10 收起 理由
yousunny + 10 赞一个!

查看全部评分

回复

使用道具 举报

ID:221865 发表于 2018-8-3 08:13 | 显示全部楼层
int GPIOA;
void GPIO_Init(int GPIOx);
函数里面就是int GPIOx,然后传参数进去就是int int GPIOA
你的意思是这样吗?
回复

使用道具 举报

ID:363318 发表于 2018-8-3 09:05 | 显示全部楼层
GPIO对电脑来说是常量符号,是通过指针进行改变,你那个不能换宏定义,这不是c语言编程能换的。
回复

使用道具 举报

ID:382403 发表于 2018-8-3 09:31 | 显示全部楼层
强制类型转换啊,   GPIOA_BASE是个常量
回复

使用道具 举报

ID:308437 发表于 2018-8-3 09:57 | 显示全部楼层
帮你问了群友,下面是答案。具体的如下 22.png
回复

使用道具 举报

ID:370041 发表于 2018-8-3 09:59 | 显示全部楼层
硬说也没什么毛病     但是32库函数给出的是系统化的。就是一层一层很有逻辑性,,调用起来十分方便。    然后你32新手上路,,,真的不需要考虑这个,,,你只需要学会使能和端口的应用。   库函数本来就是方便使用的,不用考虑太深
回复

使用道具 举报

ID:382550 发表于 2018-8-3 16:28 | 显示全部楼层
GPIO对电脑来说是常量符号,是通过指针进行改变,不过可以尝试强制类型转换
回复

使用道具 举报

ID:350911 发表于 2018-8-3 16:36 | 显示全部楼层
强制类型转换吧
回复

使用道具 举报

ID:329253 发表于 2018-8-3 22:19 来自手机 | 显示全部楼层
多德 发表于 2018-8-3 08:13
int GPIOA;
void GPIO_Init(int GPIOx);
函数里面就是int GPIOx,然后传参数进去就是int int GPIOA

是的,所以该怎么办
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表