void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
switch (*(uint32_t*)
&GPIOx)
{
case GPIOA_BASE:
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE);
break;.....
不明白switch行中GPIOx为什么要取址,GPIOx本来不就是地址么?
#define GPIOA ((GPIO_TypeDef*)GPIOA_BASE)
求解释
此帖出自
小平头技术问答
2、switch()括号里面的类型跟 case后面的GPIOA_BASE的类型是一样的;
3、这里(*(uint32_t*)&GPIOx),是跟4楼说的一样,是做了强制类型转换。
差评!
*(int *)0x0001 = 34;
(int).....
我是写不下去了,你写给我看
GPIOX不是变量,是一个宏定义的地址值,该地址值被强制转换成 GPIO_TypeDef *型
一周热门 更多>