指针指针(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这个数据。

无忧云-河南洛阳BGP,CEPH集群分布式存储,数据安全可靠,活动期间月付大优惠!

 无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点...

LOCVPS(29.6元/月)KVM架构 香港/美国机房全场8折

LOCVPS商家我们还是比较熟悉的老牌的国内服务商,包括他们还有其他的产品品牌。这不看到商家的信息,有新增KVM架构轻量/迷你套餐,提供的机房包括香港云地和美国洛杉矶,适用全场8折优惠,月付29.6元起。LOCVPS是一家成立于2011年的稳定老牌国人商家,主要从事XEN、KVM架构的国外VPS销售,主推洛杉矶MC、洛杉矶C3、香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡等数据中心...

快云科技,美国VPS 2H5G独享20M 仅售19.8/月  年付仅需148

快云科技已稳步运行进两年了 期间没出现过线路不稳 客户不满意等一系列问题 本司资质齐全 持有IDC ICP ISP等正规手续 有独特的网站设计理念 在前几天刚是参加过魔方系统举行的设计大赛拿获最佳设计奖第一名 本公司主营产品 香港弹性云服务器,美国vps和日本vps,香港物理机,国内高防物理机以及美国日本高防物理机 2020年的国庆推出过一款香港的回馈用户特惠机 已作为传家宝 稳定运行 马上又到了...

altools u32为你推荐
苹果x和xr哪个好苹果x苹果xr哪个好杀毒软件哪个好什么杀毒软件比较好呢??浏览器哪个好用哪个浏览器比较好浮动利率和固定利率哪个好房贷须知:固定还是浮动利率好无纺布和熔喷布口罩哪个好表层水刺布,中间层pp无纺布+熔喷布,里层pp无纺布口罩好吗?雅思和托福哪个好考托福好考还是雅思好考?qq空间登录网页版求这张图的原图,是QQ空间最近网页版登录界面的背景辽宁联通网上营业厅中国联通网上营业厅固定电话费查询willyunlee求几近完美演员表,几近完美女主角几近完美男主角是谁?东莞电信宽带在东莞报装办理电信宽带好不好用,需要多少钱,在哪里报装
网站域名空间 免费二级域名 企业域名备案 老域名全部失效请记好新域名 linode日本 namecheap 42u机柜尺寸 华为云主机 天猫双十一抢红包 牛人与腾讯客服对话 免费全能空间 服务器维护方案 空间合租 美国免费空间 搜索引擎提交入口 免费邮件服务器 中国域名 SmartAXMT800 镇江高防服务器 windows2008 更多