游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

寄存器与指针,以STM32为例说明什么是寄存器及如何使用指针

  我们平时所常用的STM32芯片主要由内核和片上外设组成,内核通过各种总线与外设连接,芯片最重要的作用有两个,一个是根据输入在一定条件下进行运算,而另一个重要的作用就是操作这些外设对外部硬件进行控制。
  而这些可以控制外部硬件的操作就分别存储在一个个内存空间中,这些内存空间可以形象的理解为一个个小房子,
  内核想利用房子中的指令就要通过地址去访问,这个地址就如同我们生活中的门牌号,你要通过门牌号找对地方,才能找到要找的人。
  但是这个门牌号不是很好记忆,很容易搞错,位数越多的芯片越不方便,于是我们给这些地址重新起了别名,这就是我们常说的寄存器。
  STM32外设资源丰富,一个GPIO端口下有很多控制寄存器,比如配置输入输出模式与速度的GPIOCRL和GPIOCRH,控制输入输出数据的GPIOIDR和GPIOODR,进行端口位设置清除的GPIOBSRR和GPIOBRR。
  寄存器可以用指针来操作,它将寄存器和指向的地址关联起来,然后对寄存器直接进行赋值操作就可以控制输入输出满足我们的开发需求。
  那指针是什么?我们先简要说明下。
  指针的应用最主要就是号和的符号,的符号表示取地址,a就表示变量a的存储地址;
  而号要注意区分,定义时星号表示指针变量,所以定义时直接赋值需要取地址,而不是取具体值;
  而在计算时,星号表示取值,p就表示p指向地址中的值,所以图中第二段代码最后计算出来b就与a的数值相等了。
  当内存空间较小,单片机资源有限时,比如8位51单片机,我们一般可以直接对寄存器进行赋值操作,
  这就相当于我直接把房子挑出来,然后将一个数值丢进去存起来,但当单片机资源庞大,寄存器众多,操作位数变为32位或者64位,这种方式就不合适了,
  一个是每次都要去查寄存器详细定义,效率低下还容易出错,再一个是程序可读性差后期维护困难,除了编写原作者其他人很难看懂。
  所以现在很多芯片厂商都推出了固件库,工程师在应用时也会根据公司产品的特点开发私有库,但无论形式如何这些都是为了减轻我们开发负担的手段。
  以STM32为例,ST公司将几乎所有常用寄存器进行封装,这样绝大部分应用场合我们就只需要关心功能的开发,而不必去知道底层硬件资源都是怎么被调用的。
  而这些寄存器操作函数封装中大量使用指针和结构体指针,比如单片机GPIO作输入输出时都要使用的IO口初始化函数GPIOInit中就定义了结构体指针变量GPIOInitStruct。voidGPIOInit(GPIOTypeDefGPIOx,GPIOInitTypeDefGPIOInitStruct)
  GPIOInitStruct有三个变量成员,分别是PIN脚定义、IO口通信速率、输入输出模式:typedefstruct{uint16tGPIOPin;!SpecifiestheGPIOpinstobeconfigured。ThisparametercanbeanyvalueofrefGPIOpinsdefineGPIOSpeedTypeDefGPIOSpeed;!Specifiesthespeedfortheselectedpins。ThisparametercanbeavalueofrefGPIOSpeedTypeDefGPIOModeTypeDefGPIOMode;!Specifiestheoperatingmodefortheselectedpins。ThisparametercanbeavalueofrefGPIOModeTypeDef}GPIOInitTypeDef;
  而这些变量成员可以选择的值都在特定的头文件中用宏定义或枚举的方式,将大串数字替换成了清晰易懂的英文单词,这样在用户后续进行赋值操作的时候就不用去查芯片手册再敲上一长串数字了,直接使用替代名称,直观又不容易出错:defineGPIOPin0((uint16t)0x0001)!Pin0selecteddefineGPIOPin1((uint16t)0x0002)!Pin1selecteddefineGPIOPin2((uint16t)0x0004)!Pin2selecteddefineGPIOPin3((uint16t)0x0008)!Pin3selecteddefineGPIOPin4((uint16t)0x0010)!Pin4selected
  用户调用:(是不是很简单,不用去理会复杂的固件函数,对萌新极其友好)GPIOInitStructure。GPIOPinGPIOPin3;配置端口号GPIOInitStructure。GPIOModeGPIOModeOutPP;推挽输出模式GPIOInitStructure。GPIOSpeedGPIOSpeed50MHz;IO口输出速率为50MHz
  说到这里,这篇文章也就结束了,可能有的同学会奇怪,为什么一定要用指针,直接赋值不是也能实现同样的效果?确实是这样的,但是直接赋值,一旦程序要进行改动或者部署到新的硬件上,就要把相关的参数全部修改一遍,因为直接赋值你的操作对象是房子中的东西(存储数据),而使用指针你的操作对象是房子(寄存器地址),什么样的东西是不确定的,而房子是有限且确定的,所以使用指针能极大提高程序的复用性和简洁程度,是让C语言变得华丽优美的关键所在。

超市4大憋屈酒,都是纯粮佳酿,却因为便宜遭嫌弃,你喝过吗导语:超市4大憋屈酒,都是纯粮佳酿,却因为便宜遭嫌弃,你喝过吗?中国酒文化传承数千年来,如今对人们来说,它代表的不只是一种饮料,还是一种情感寄托。每到节日宴会时,都能在桌……英国为何在美国独立战争中失败?英国是一个我们都很熟悉的西方国家,也是联合国五常国家之一,在当今世界上很有影响力。在18世纪时,就被称为日不落大英帝国,成为实至名归的全球霸主。作为一个强大无比的殖民国家,英国……副业如何月入两三万?一、小李介绍大家好,我是小李。我本科是学电子商务的,所以从大学就跟电商开始结缘。毕业后顺利进入京东总部,3年时间从一名小运营做到美妆类目微信渠道的项目经理。2015……四川广安以退为进税惠为企业扩大生产添砖加瓦塔吊高耸林立、钢筋纵横交错、机器轰鸣不断,施工机械、运输设备往来穿梭在位于广安市岳池县的四川仁安药业有限责任公司项目施工现场,钢筋班组、混凝土班组、木工班组、金钢砂班组共计30……多年前红军借了湖北老汉400大洋,老人拿欠条讨要,应还多少?导语:二十世纪的旧中国,经济凋敝,社会落后,战乱频仍,很多西方资本主义国家都将目标投向了中国,我国面临着四分五裂的局面。不仅如此,国内军阀势力和封建势力仍然存在,百姓们过着颠沛……她刘胡兰,年仅14岁壮烈牺牲,刽子手和叛党藏匿多年终被处决引言:记住历史,记住英雄!说起刘爱兰这个名字,大家可能并不熟悉,但是如果说起他的姐姐刘胡兰,就不会有人陌生了吧。这个爱国英雄,年仅14岁就英勇牺牲了。她的死,让刘爱……总负债超300万亿,从储蓄大国到负债大国,百姓钱花哪了从古至今,中国的老百姓都有着储蓄意识的。目前来说,世界平均的储蓄率为29,相比之下,我国近十年来的储蓄率虽然有所下跌,但依旧高达45,远远高于世界平均水平。根据相关的数据显示,……优等生阿里被曝滚动式裁员,毕业后的他们在脉脉里抱团取暖盛夏渐近,今年的裁员寒冬却似乎远没有过去。5月中旬,随着一张截图的流传,阿里裁员引发关注。该截图显示,有网民爆料杭州某大厂西溪园区A区和B区访客会议室被集团预定,用于大规……毛泽东从来没有去过香港,却提前51年前预言并决定了它的未来改革开放前,深圳罗湖桥的名气就非常大。上世纪六、七十年代,在《跟踪追击》、《羊城暗哨》、《秘密图纸》等几部反特电影中,美蒋特务潜入大陆的主要通道便是这里。罗湖桥长不……壬寅宫变宫女为什么冒着生命危险要勒死嘉靖,嘉靖皇帝干了什么嘉靖皇帝是历史上有名的道教皇帝,他这一生崇尚黄老之道,修仙问道,服食丹药,给后世皇帝留下了一个巨大的烂摊子,这也是隆万革新的直接原因。但是不为人知的,其实他早年也是英明神……令人眼花缭乱的银河系全景图揭示近1000条神秘的银河系线段在20世纪80年代初,科学家们对距离地球25000光年的银河系中心进行了成像。令他们惊讶的是,他们偶然发现了一簇150光年长的线(或丝),以一种奇怪的组织模式悬挂在那里。多年来……如果顾全没有皮肤病的烦恼,专心训练,可能早就是国家队主力锋线在人们讨论走了李慕豪,崛起个沈梓捷,深圳队不缺核心的时候,好像将这个深圳队最大牌的球员给忘了。作为一个锋线球员,会空切能突破、有投篮懂防守,关键是还能将低位单打耍的有模有……
隋朝的先天不足杨坚用人的局限性及平衡关陇与山东士族的利益北周末年那场宫廷政变,让杨坚顺利掌握了大权,他自己都不敢相信这场政变居然出奇地顺利。在杨坚看来,自己走了一条捷径,这条捷径虽然让他迅速达到了目的,但正常来说,通往皇权的道路应该……不让侵略者入侵中国,这是中国人的意愿,也是我们的责任不把日本侵略者赶出中国,决不刮掉胡子,这句话可是革命先烈杨靖远的誓言,并且将其贯穿了他的一生。杨靖远也是从小读书,会中医,说实话虽然过得不是很富裕,但是也能过得去。可是后……田海蓉母亲去世,独自抚养女儿,47岁依旧单身文立方2018年,《正阳门下小女人》一经开播,便拿下全国收视第一的宝座。田海蓉在这部戏里扮演绸缎店老板陈雪茹,历经数十载风雨飘摇的时代变迁,不但拥有敏锐的商业嗅觉,……英国国徽,为什么写的是法语,而不是英语?英语作为当今世界使用最广泛的语言,它的传播与英国历史上的殖民扩张密不可分。然而,就是在这个英语大行其道的世界,与英国隔海相望的法国,却似乎可以说是最不愿意说英语的国家了。……北大研究盐一换,每年或减少45万人死亡,低钠盐到底怎么吃?最近,57岁的刘大叔发现自己的血压偏高,经常感觉头晕眼花,走路都轻飘飘的。他想去医院检查,开点药吃,但妻子却有不同的看法。妻子表示,她之前在网上看到有人靠吃大蒜来降血压,……也门为何这么乱?从沙特未完成的志业和反沙抗美说起也门,这个位于阿拉伯海和红海边缘,与阿曼和沙特阿拉伯接壤,有着无比重要战略位置的小国,在近代以来就没有安享过长久的和平。从国家的分裂爆发内战,到国家统一后内战再次爆发,从……立冬补冬,记得常吃3白3黑,顺应节气,健康平安过冬天立冬补冬,记得常吃3白3黑,顺应节气,健康平安过冬天明天就是二十四节气中的立冬了,冬天将正式开启,随着冬天的到来,气温也将随之越来越低,此时正是人体养藏的好时机,应养精蓄……俄罗斯宇航员太空行走欧空局女宇航员SamanthaCristoforetti与俄罗斯宇航员OlegArtemyev正在执行太空行走任务。7月21日,俄罗斯和欧洲宇航员时隔23年首次一同执行太空行走……党史专家石仲泉力作大师是怎样炼成的出版在胡绳100周年诞辰之际,著名党史专家石仲泉教授写作了《大师是怎样炼成的石仲泉谈胡绳》,全书评传式回顾了胡绳的成长经历,包括其从书香门第到投身革命,以及作为党的两代核心领导的又……天京之变诸王互相残杀,天军精锐损失过半,天国从此由盛转衰1856年,是中国近代史上不平凡的一年。这一年,英国和法国发动了第二次鸦片战争,俄罗斯则在后方趁火打劫,抢占中国东北百万平方公里土地。这一年,太平天国运动达到了顶峰,石达开在江……与邓小平有过短暂的婚姻,后来嫁给李维汉,儿子成了副国级在长征战略转移中,红军的实力遭受到极大的损失,从瑞金走的时候,红军一共有三十几万人,待到吴起镇的时候,红军一方面军只剩下不到一万人。不过叫人惊奇的是,在这一万钢铁洪流里,……清朝大臣三更半夜起床上早朝,经常迟到,皇帝扣他们工资也没用不想上班,迟到早退,这是在很多人身上真实存在的日常状态。只是怕被扣工资,不敢这么做而已。追溯到古代,那些身负重任的大臣,也不想上朝。以清朝为例,大臣上朝迟到早退所在多有,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网