新手求助 GPIO库函数参数检查(((*(uint32_t*)&(PERIPH))这功能中语法疑问

2019-08-17 10:45发布

#define IS_GPIO_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == GPIOA_BASE) ||
                                    ((*(uint32_t*)&(PERIPH)) == GPIOB_BASE) ||
                                    ((*(uint32_t*)&(PERIPH)) == GPIOC_BASE) ||
                                    ((*(uint32_t*)&(PERIPH)) == GPIOD_BASE) ||
                                    ((*(uint32_t*)&(PERIPH)) == GPIOE_BASE) ||
                                    ((*(uint32_t*)&(PERIPH)) == GPIOF_BASE) ||
                                    ((*(uint32_t*)&(PERIPH)) == GPIOG_BASE))




请教大神,这里 (((*(uint32_t*)&(PERIPH))为什么不直接写(PERIPH)) == GPIOA_BASE?看了好几遍不明白这里为什么这样用?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-08-17 10:54
可以按你的方式写。  
wpsmart
2楼-- · 2019-08-17 12:22
 精彩回答 2  元偷偷看……
so
3楼-- · 2019-08-17 14:38
这就是指针的指针,这里操作的是地址
wpsmart
4楼-- · 2019-08-17 14:47
so 发表于 2017-5-26 02:03
这就是指针的指针,这里操作的是地址

GPIOA_BASE是个地址我明白,只需要将PERIPH定义成指针变量,然后(PERIPH)) == GPIOA_BASE就可以了,这里为什么要先取PERIPH的地址呢?
wpsmart
5楼-- · 2019-08-17 17:58
正点原子 发表于 2017-5-24 23:42
可以按你的方式写。

谢原子哥,刚入手了一块的767开发板,好多小疑惑影响学习进度,总不能一直发帖,有没有交流群呢?

一周热门 更多>