指针指针(u32指针)GPIOx简介

altools u32  时间:2021-01-22  阅读:()

typedef struct

{

__IO uint32_t CRL;

__IO uint32_t CRH;

__IO uint32_t IDR;

__IO uint32_t ODR;

__IO uint32_t BS RR;

__IO uint32_t BRR;

__IO uint32_t LCKR;

}GPIO_TypeDef;

GPIO_TypeDef是一个结构体定义,里面定义了控制端口的几个寄存器

#define PERIPH_BASE ((uint32_t)0x40000000)

#define APB2PERIPH_BASE (PERIPH_BASE+0x10000)

#define GPIOA_BASE (APB2PERIPH_BASE+0x0800)

可以看出 GP IOA_BASE其实就是一个地址偏移量是一个U32类型的常量说到底就是一个地址

#define GPIOA ((GPIO_TypeDef*)GPIOA_BASE)

注 GPIOA就是GPIO_TypeDef类型的指针了,这样子就可以直接通过GPIOA这个地址来访问

其中的寄存器O DR,B RR之类

GPIO_DeInit GP IOA 

STM32中的源程序

/***********************************************************************

********

*函数名称:GP IO_De Init

*功能描述:将GPIO部件的寄存器复位为默认值

*输入参数:GPIOx x可为A到G来选择特定的GPIO设备

*输出参数:无

*返回参数:无

************************************************************************

*******/void GPIO_DeInit(GPIO_TypeDef*GPIOx)

{

/*Check the parameters [检查参数]*/ass ert_param(IS_GPIO_ALL_PERIPH(GPIOx));sw itc h(*(u32*)&GP IO x)

{case GPIOA_BASE:

RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA,DISABLE);b re ak;case GPIOB_BASE:

RCC_APB2PeriphResetCmd(RCC_APB2P eriph_GPIOB,ENABLE);

RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB,DISABLE);b re ak;

. . . . . .

}

}

有人说

(*(uint32_t*)&GPIOx)获得的值就是GPIOx本身的值,只不过类型变了而已可以简化为(U32)GPIOx,

这样也可以获得(*(uint32_t*)&GP IOx)的效果 即(*(uint32_t*)&GPIO x)

= (U32)GPIO x 但是,

为什么要这样子做,我觉得是可读性问题, (U32)GPIOx是可以获得同样的结果 但是却不合理,让人觉

得无厘头; (*(uint32_t*)&GP IOx)的运算虽然兜来兜去,但是却是符合语法,跟逻辑的.无非最核心的

部分是获得一个指针的指针,然后对这个指针的指针取值,获得最原始那个指针。但是我觉得——这里GPIOx是个指针 (*(uint32_t*)&GP IOx)获得的值是指针GPIOx中的值类型也改变了

但不能简化为U32GPIOx而简化为*GPIOx好像更合适。

因为有#define GPIOA ((GPIO_TypeDef*)GPIOA_BASE),并且调用GPIO_De Init(GPIOA)后指针GPIOx

所指的值就为0x40010800假设指针变量GPIOx的地址为0x20000000那么&GPIOx就是取GPIOx的地址

0x20000000 (u32*)&GPIOx就是将0x200000000存的数据强制转化为u32位类型的数据 * (u32*)&GPIOx就

能得到地址里0x200000000存的0x40010800这个数据。

香港站群多ip服务器多少钱?零途云香港站群云服务器怎么样?

香港站群多ip服务器多少钱?想做好站群的SEO优化,最好给每个网站都分配一个独立IP,这样每个网站之间才不会受到影响。对做站群的站长来说,租用一家性价比高且提供多IP的香港多ip站群服务器很有必要。零途云推出的香港多ip站群云服务器多达256个IP,可以满足站群的优化需求,而且性价比非常高。那么,香港多ip站群云服务器价格多少钱一个月?选择什么样的香港多IP站群云服务器比较好呢?今天,小编带大家一...

#消息# contabo:德国老牌机房新增美国“纽约、西雅图”数据中心,免设置费

运作了18年的德国老牌机房contabo在继去年4月开办了第一个美国数据中心(中部城市:圣路易斯)后立马在本月全新上马两个数据中心:纽约、西雅图。当前,为庆祝美国独立日,美国三个数据中心的VPS全部免除设置费,VPS本身的配置很高,价格适中,有较高的性价比!官方网站:https://contabo.com/en/SSD VPSKVM虚拟,纯SSD阵列,不限制流量,自带一个IPv4内存CPUSSD带...

spinservers:圣何塞物理机7.5折,$111/月,2*e5-2630Lv3/64G内存/2T SSD/10Gbps带宽

spinservers美国圣何塞机房的独立服务器补货120台,默认接入10Gbps带宽,给你超高配置,这价格目前来看好像真的是无敌手,而且可以做到下单后30分钟内交货,都是预先部署好了的。每一台机器用户都可以在后台自行安装、重装、重启、关机操作,无需人工参与! 官方网站:https://www.spinservers.com 比特币、信用卡、PayPal、支付宝、webmoney、Payssi...

altools u32为你推荐
免费卡巴斯基杀毒软件怎样免费用卡巴斯基杀毒软件?电脑管家和360哪个好360和电脑管家哪个好啊华为p40和mate30哪个好华为mate30和荣耀3O那个好?录音软件哪个好什么录音软件最好用网页传奇哪个好玩哪个传奇类网页游戏即好玩又不花钱??行车记录仪哪个好行车记录仪哪种好用?qq空间登录不上qq空间登不上去yy空间登录怎么进入YY音乐空间考生个人空间登录第一次登陆湖南省高等教育自学考试 考生个人空间就密码不对为什么如何增加百度收录如何提高百度收录率?
合肥虚拟主机 美国服务器租用 免费试用vps 外贸主机 idc评测网 20g硬盘 地址大全 我爱水煮鱼 七夕促销 新世界服务器 新睿云 512mb web服务器是什么 免费asp空间申请 免费网络 攻击服务器 hdsky 海外加速 globalsign 卡巴斯基免费版 更多