当前关注:野火STM32学习笔记
互~凉~网的广大观众朋友们大家好,本up猪在C站(CSDN俗称粪坑)的ID叫
互~凉~网的广大观众朋友们大家好,本up猪在C站(CSDN俗称粪坑)的ID叫飞天大司马,鉴于C站虽然阅读量大,但是本人反馈无法及时,因此在B站同步更新创作内容,欢迎各位新老粉丝前来批评指正一起学习。
(资料图片)
学习原因即优缺点:固件库的出现让STM32的开发难度大大下降,它通过库文件的封装,把众多的内存元整合为一个整体,在我们想要操作某一位寄存器时只要调用它所在的固件库就可以。缺点是不同型号的单片机的固件库有所区别,如果移植需要很大的工作量。
介绍
学习固件库之前,为了更了解底层的一些东西,我们来先尝试写一下固件库,来体验固件库是怎么形成的。
寄存器地址在控制单片机的C语言中是一个32位的指针,可以看作是四个字节的内存。而且其分布也是有规律的,我们看上一节课中GPIOB寄存器的地址,从基地址(CRL)的最后2位的00(16进制数),到第二个寄存器(CRH)04,第三个寄存器(IDR)是08,第四个寄存器(ODR)是0C······依次增加4个字节。
这时候,伟大的C语言又给我们提供了一个工具用来封装它们,这个工具就是结构体。可能有C语言不好的同学,不了解结构体,我简单打个比方:它像一个书柜的一列,从上到下有好几格,每一格从上到下按顺序编号,最上面是第一个,最下面是最后一个。学过8086汇编的朋友可能想到了什么:堆栈。没错,这和堆栈非常相似。那我们根据结构体和寄存器内存的特点自然的就把他们俩联系起来了。
在STM32里面,寄存器的大小基本上都是32位的,有的寄存器只用了一半,低16位有效或者高16位有效。因此我们先定义可以在结构体内使用的,可以代表寄存器地址32位(4个字节)和16位变量(2个字节)。
但是我们在看到固件库的封装时,发现结构体内的数据类型都是32位的没有16位,具体原因我也不知道在这里也不敢乱说。不过本着多了不影响,少了不可以的原则,这样做也没什么大问题,浪费一些内存资源罢了。现在我们来看看结构体封装的庐山真面目。如图
typedef struct是结构体关键字,变量名是GPIO_TypeDef,里面都是32位代表寄存器地址的16进制数。理论上,结构体内的数据是在内存中连续存储的,但是目前这些结构体内的数据还不是寄存器地址而是立即数,如何把他们变成地址呢?这里又用到指针强制类型转换,将这个结构体转换为指针类型,基地址是GPIOx_BASE,比如定义GPIOB内的寄存器要这样写:((GPIO_TypeDef﹡)GPIOB_BASE)。这样写呢过于冗长,我们又可以通过一个宏定义,把这个地址的格式简单化:
这样一个GPIO固件库形式的寄存器映射就封装完毕了。我们也可以用同样的方式封装RCC寄存器,代码如图:
再用宏定义简化封装:
此时再回到之前的点灯代码当中,看看我们用固件库如何点亮一个LED灯。
可以看到好像并没有什么变化,其实它的奥妙在于编写时无需再查技术手册寻找寄存器的地址了。我们想要打开RCC寄存器中使能APB2中的时钟,只要输入RCC->
我们就可以打开RCC寄存器中任意的寄存器了。GPIO寄存器同理。
野火视频教程B站链接
https://www.bilibili.com/video/BV1yW411Y7Gw/?p=6&spm_id_from=333.880.my_history.page.click&vd_source=16419a44923b86308e680f95ec76193a
————————————————
版权声明:本文为CSDN博主「飞天大司马」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51019960/article/details/129131707
关键词:
[ 相关文章 ]
互~凉~网的广大观众朋友们大家好,本up猪在C站(CSDN俗称粪坑)的ID叫
全球人权治理高端论坛于6月14日至15日在北京举行,来自近百个国家和包
据意大利记者罗马诺透露,西汉姆将任命施泰登为俱乐部新任技术总监,双
哈焊华通:2022年年度权益分派实施公告
女生总感觉疲倦,一查竟发现是“瘦胖子”,医生表示:判断是否肥胖,体
大家好,小石来为大家解答以上问题。工程图学是什么专业,工程图学是什
2023年全国高考结束,各地转入高考阅卷工作
对于锄禾的作者是谁这个问题感兴趣的朋友应该很多,这个也是目前大家比
本文共3000字,阅读约需6分钟来源:乔小麦亲子请关注并星标“当代教育
西测测试跌2 88%创新低2022年上市超募4亿元
在2000元左右的5G手机市场中,有几款手机被广泛推荐,包括红米K40、小
“幸亏中国企业及时帮助,泛美公路才能保持畅通,大大减少了暴雨洪水对
1、插画师分为很多种类看楼主想学哪一种,有些种类不需要太好的绘画基
1、1 单击开始---运行---输入 "dxdiag "---回车在出现的表中最下方出现
兆科眼科-B(06622)涨超7%,截至发稿,涨6 76%,报3 63港元,成交额222
6月13日下午1点12分左右,杭州西兴大桥上城往滨江方向的桥面有一位女性
每经AI快讯,与气态储存相比,固态储氢系统示范装置的存储能力提升了3
日本央行12日公布的初步统计结果显示,今年5月日本企业物价指数同比上
随着世界人口的增加、居民人均财富的提升以及人类饮食变化等原因,促使
1、江苏松泉投资控股集团旗下拥有江苏东泉兄弟文化发展有限公司、南京
[ 相关新闻 ]
Copyright 2015-2023 港澳医院网 版权所有 备案号:京ICP备2023022245号-31 联系邮箱:435 226 40 @qq.com