历史上的今天
返回首页

历史上的今天

今天是:2024年09月09日(星期一)

正在发生

2019年09月09日 | STM32 (5) 自己写库 构建库函数雏形1 寄存器结构体定义

2019-09-09 来源:eefocus

前面把基础部分讲得差不多,比如说什么是寄存器,寄存器映射,怎么样来寄存器编程,寄存器编程的时候应该参考官方的什么手册,


前面讲了什么是寄存器   怎么使用寄存器编程  寄存器编程的时候应该 参考哪些手册 接下来我们开始利用固件库编程,今天开始从 最底层开始写库函数  《在零死角玩转STM32》 第九章 l利用我们上节课的历程 下面这些是7个GPIO口的寄存器映射我们到GPIO口的寄存器映射,这些是最底层的东西,我们基本上已经学会了,那么接下来我们   进入固件库编程在真正进入固件库编程之前,我们应该了解固件库与寄存器的联系,参考《零死角玩转STM32F103-霸道》第九章  自己写库构建库函数雏形针对霸道 和指南者    

 

上图是我们上节课的历程,是我们对上节课 寄存器的映射,每一个寄存器都实现了寄存器的映射,GPIO口的寄存器有7个,但是如果寄存器多的话,这样的代码要写好多 就不太方便了,那么今天就要来对他进行优化


我们来看一下上图中的寄存器映射,比如说我们要操作GPIOB  ,那么就要操作  端口B外设的基地址 :GPIOB_BASE,地址在C语言里就是指针,而且他是32位的,那么他就指向了4个字节的内存,那么我们的  GPIOB_BASE就指向GPIOB的第一个地址,那么如果我们操作 GPIOB_BASE  这个指针,那么他访问的就是CRL这个寄存器,而且我们可以看到这些寄存器都是有规律的分布的,地址都是以4个字节递增,这个就跟C语言当中的结构体是类似的,因此我们在  定义一个结构体,这个结构体也有7个成员,类型叫做 GPIO_Type,我们刚刚说了GPIOB_BASE  是一个32位的通过我们这个指针他只能访问4个字节的内存,那么如果说我们想基于这个地址来访问GPIO的所有寄存器的话,该怎么办呢?如果GPIOB_BASE 这个指针是下图中的GPIO_Type的结构体类型的话,它就可以访问GPIO的所有寄存器的话了,所以说如果我这个指针和外设的基地址是一样的话那我们就可以通过一个结构体的方式访问这个寄存器了,比起上节课讲的每一个寄存器都要找到他的绝对地址这样子要方便很多,那么怎样将我们的GPIO_BASE转化成GPIO_Type这种结构体类型的指针呢?   C语言当中有一种 叫强制类型转化

然后再将上面的类型定义成一个宏

那么这个GPIOB可以指向GPIO_Type的所有成员,这里只要GPIO_Type成员的名字对应的实际地址不变那么,那么这个结构体的成员名可以 随便定义

以下的代码中就是通过GPIOB的结构体类型指针去访问他的成员变量,利用->这个 符号就可以指向他的各个成员。

总结;实现结构体方式访问的原理:1.先声明一个结构体,结构体中包含很多成员, 结构体成员的类型与分布的顺序都与我们寄存器的排列方式是一样的(上图8.5中寄存器的排列方式与我们结构体中的排列都是一致的,而且我们每一个寄存器都是u32类型的,与实际的寄存器大小一致,这样就做到了结构体GPIO_Type的成员与外设寄存器的一一对应)


2找到外设的基地址例如是GPIOB_BASE,然后把这个地址强制转化成上面的结构体类型

经过强制类型转换后,它就指向了GPIO_Type这里的所有成员,那么这样我们就可以通过C语言的结构体方式来操作stm32的所有外设。

推荐阅读

史海拾趣

Carlisle Interconnect Components公司的发展小趣事

Carlisle Interconnect Components公司深知品质是赢得市场的关键。因此,公司建立了严格的质量管理体系,从原材料采购到生产制造,再到产品出厂,每一个环节都严格把控。这种对品质的执着追求,使得公司的产品在国际市场上获得了良好的口碑。同时,公司还积极拓展海外市场,与多家国际知名企业建立了稳定的合作关系,进一步提升了公司在全球电子连接器市场的影响力。

Cal-Chip Electronics公司的发展小趣事

在快速发展的过程中,Cal-Chip Electronics公司始终关注社会责任和可持续发展。公司积极参与公益事业,支持教育、环保等领域的发展。同时,公司还注重环保生产,通过引进先进的环保技术和设备,减少生产过程中的污染排放。此外,公司还建立了完善的员工培训体系,为员工提供广阔的职业发展空间。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上是关于Cal-Chip Electronics公司在电子行业发展的5个相关故事,这些故事展示了公司在不同历史阶段所取得的成就和面临的挑战。通过不断努力和创新,Cal-Chip Electronics公司已经成为了电子行业的一颗璀璨明星。

Analytic Instruments Corp公司的发展小趣事

随着电子行业的快速发展和技术的不断进步,Analytic Instruments Corp面临着日益激烈的市场竞争。为了保持领先地位,公司不断调整产品结构和市场策略,积极应对行业变革。公司加大了研发投入,推出了一系列具有创新性和竞争力的新产品。同时,公司还加强了与客户的沟通和合作,深入了解客户需求,为客户提供更加个性化的解决方案。

东科半导体(DK)公司的发展小趣事

面对电源管理芯片市场需求的不断增长,东科半导体(DK)公司决定投资扩产。公司投资数亿元建设新的生产线和研发基地,提升产能和研发能力。同时,公司还加大了对新技术、新产品的研发投入,不断推出具有竞争力的新产品。通过投资扩产和加大研发投入,东科半导体(DK)公司进一步巩固了其在电源管理芯片市场的领先地位。

以上五个故事从不同角度展现了东科半导体(DK)公司在电子行业中的发展历程和成就。这些故事不仅记录了公司的成长轨迹,也反映了公司在技术创新、产学研合作、市场拓展和品牌建设等方面的努力和成果。

倍思特(BEST)公司的发展小趣事

为了加速技术创新和人才培养,东科半导体(DK)公司积极与高校和科研机构开展产学研合作。公司与安徽工业大学共建联合实验室,共同研发新技术、新产品。此外,东科还积极引进国内外优秀人才,打造了一支高素质、专业化的研发团队。通过与高校和科研机构的合作,东科不仅提升了自身的研发实力,也为公司的长期发展奠定了坚实的人才基础。

Crystal Semiconductor Corp公司的发展小趣事

Crystal Semiconductor Corp成立之初,面临着资金短缺、技术难题和市场竞争的多重压力。然而,公司的创始人凭借对半导体技术的深刻理解和敏锐的市场洞察力,成功吸引了一批志同道合的工程师和投资者。他们共同攻克了技术难关,推出了首款具有竞争力的晶体管产品,迅速在市场上占据了一席之地。

问答坊 | AI 解惑

高精密运放资料 运用

本帖最后由 paulhyde 于 2014-9-15 03:46 编辑 主要用于微弱小信号放大,尤其是做传感器的微弱信号,AD620与OP07配合,AD620可做前级放大,OP07可做二级放大  …

查看全部问答>

RFIC 设计挑战及设计流程分析

近年来,移动通信的市场需求增长迅速,当前的移动通信系统已经可以使用成熟的信号处理技术来获取更高的信息传输速率。下一代无线系统的设计难度将增大,主要体现在对多标准和可重配置性的支持。不同的通信标准在中心频率、信号带宽、信噪比和线性度 ...…

查看全部问答>

LM3S3749读写SHT11

:QLM3S3749读写SHT11的程序,串口输出读出的温湿度值,也可以移植到SHTXX系列的其他传感器。…

查看全部问答>

2812库文件错误

在编译程序过程中出现以下错误 undefined                        first referenced symbol              &nb ...…

查看全部问答>

AND元件作用是什么?

一个电路用这个元件,不知什么作用,资料也搜不到,有用过的吗? 请教了!…

查看全部问答>

8位控制器数据集成到32位APB总线上怎么处理比较合理?

请教各位大侠,我现在想集成一个8位的CAN控制器在APB总线上 CAN控制器的输入输出数据都是8位的,而APB总线的输入输出数据都是32位的。。。 那把这个控制器集成在APB总线上的时候怎么处理比较合理? 高24位补零,好像太浪费了。。。CAN的波特率比 ...…

查看全部问答>

请问wince6.0在windows7上能进行开发么

请问wince6.0在windows7上能进行开发么,我是新手用的是s3c2440…

查看全部问答>

谁有AVR自带的函数库?

谁有AVR自带的函数库,请问怎样用啊···········急······…

查看全部问答>

电压转换:不会比这更简单了

作者:Chris Cockrill  德州仪器如今,现代设计公司不仅正在努力寻找功耗更低的更小型器件,同时他们还希望为工业自动化、PC、服务器以及电信设备等应用降低成本。实现这些目标的绊脚石是:设计人员使用运行在单一电压下的处理器,其需要 ...…

查看全部问答>

全新未拆封 MSP430 开发板 MSP-EXP430G2 LaunchPad 带触摸板

本帖最后由 nwcheroes 于 2014-7-21 23:48 编辑 全新未拆封 MSP430 开发板 MSP-EXP430G2 LaunchPad 带触摸板 50不包邮,淘宝交易 http://item.taobao.com/item.htm?id=40208386645 …

查看全部问答>