【天天报资讯】野火STM32学习笔记(构建库函数模型第三节课)

2023-06-18 12:59:32 来源:哔哩哔哩 分享到:

完善GPIO初始化的配置

上一节课我们已经完成了对GPIO端口复位和置位寄存器的初始化,这节课我们来对他进行一个完善的工作。完善工作很有必要,为什么呢?注意看如下代码段


(资料图片仅供参考)

前三行可以很清楚地看见我们操作的是GPIOB的CRL与CRH,以及RCC的APB2ENR寄存器,但是这些16进制数对于基础知识不好的同学容易看不明白。于是我希望可以把他们封装的更加简洁一点。

拿CRL这个GPIOx->CRL这个寄存器举例,我们来看一下技术手册中它的说明

可以看到如果想要操作这些寄存器的状态,我们要用两位二进制数代表(程序里面一般是用16进制操作)它的四种状态,操作起来麻烦,读者看起来也很抽象,尤其没有技术手册的时候更是不可能看明白的了。那我们能不能把这些需要16进制数进行|=和&=~操作的状态也如同上节课那样封装起来呢?答案是肯定的。

我们还是用到C语言的结构体进行封装,代码的思路如下,首先我们要确定具体是哪一个端口,接着要确定这个GPIO端口的工作速度,最后再设置它的工作模式。结构体代码如下图

之前的文章里我写到没有看见16位的结构体内定义的情况,这里就是了,对之前的疑问可以说是有了答案。之前定义的GPIO_Pin是16位的,因此这里也写的是16位。根据技术手册,可以看到输出模式有八种,输出速度只有有三种,16位的二进制数有65536种情况,为了防止编程时犯错误,我们希望把这些值限定在某个范围内。C语言里有一个叫做枚举的工具帮助我们完成这项工作,枚举的关键字叫做enum。

枚举的结果如下图所示

这里补充一些C语言的知识,大家看到枚举会感觉它和结构体很相似,但是注意枚举里面每一行结束是逗号,而结构体是分号。如果枚举的第一个对象赋值为1,那么第二个对象的赋值为1+1=2,后面是以此类推加1的,如上图工作速度枚举。如果对象的枚举值不是自加1的值,那么我们就要给每一个枚举值分别定义,如上图定义工作模式的枚举所示,它的对象每一个值都是根据技术手册来定义的。

工作模式枚举的讲解

这一部分因为理解起来较为困难,我单独拎出来着重讲解。首先我们看看技术手册里面关于工作模式的各种值的定义如下图:

可以发现都是00到11的二进制数,和枚举里写的不一样呀,而且输入输出怎么会是一样的值呢?答案我们只能去官方的固件库手册里面寻找。火哥已经把问题的答案总结为一张表格:

首先我们看,这张表格的16进制就对应的我们枚举里面的值,然后我们把它转化为2进制之后,既可以和右侧的配置一一对应了。

最右侧最低的两位都是0,其实这两个位对应的是工作速度,但是工作速度我们已经拿出来单独配置了,因此在确定工作模式的时候就把它们全部置为0,最后我们加上单独配置好的工作速度对应的值即可,加起来的值最终会写入控制寄存器。

还剩下的六位我们来看看它是如何配置的

位于第三位和第四位bit2和bit3,它们的值刚好对应图六中输入/输出模式的值,因此这两位就是控制GPIO引脚的输入模式和输出模式分别有四种,不过上拉和下拉输入有点特殊,下面会讲到。再看第五位bit4,它的作用就是区分输入还是输出,0为输入1为输出就是那么简单。把目光转到第六位和第七位上来,输入模式中有上拉和下拉输入,根据技术手册截图图六可以看到这两个都是10,在图七里的三四位都是写成了00,所以说三四位不好直接定义是上拉还是下拉,于是就在第六位和第七位下文章了,01代表下拉,10代表上拉。最后最高位都为0。

总结一下其实这相当于一个算法了,确实挺有难度的。

这节课的内容先到这里,下节课我们来讲,这么复杂的算法怎么用C语言,写到配置GPIO的C文件stm32f10x_gpio.c里面去。

标签:

【天天报资讯】野火STM32学习笔记(构建库函数模型第三节课)

来源:哔哩哔哩 2023-06-18 12:59:32

全球快看:“茶和天下·雅集”暨中国茶文化主题展在匈牙利举办

来源:人民网-国际频道 2023-06-18 11:55:45

第十四届(2023)中国鹿业发展大会、中国吉林第三届梅花鹿产业发展大会暨双阳区第九届梅花鹿节开幕

来源:金台资讯 2023-06-18 11:24:42

印度北方邦酷暑导致34名60岁以上老人死亡_世界快播

来源:新华社客户端 2023-06-18 10:54:35

父亲节大手拉小手,3000余组家庭洋湖开走

来源:湖南日报 2023-06-18 10:11:51

焦点热讯:“神器”使用后能让“电表”走慢?权威鉴定:假的

来源:广州日报 2023-06-18 09:36:45

国家医保局推出16项医保服务便民措施 医保跨省转接缩至15个工作日_环球聚焦

来源:北京日报 2023-06-18 09:11:23

京东:618 高潮开启,超 30% 国产品牌成交额增长超 100%

来源:IT之家 2023-06-18 06:01:40

【以案释法】建材占道不可行 城管发现速整改

来源:百度新闻 2023-06-18 04:43:14

水性粘胶,什么是粘胶?

来源:互联网 2023-06-18 02:47:44

九年从未落下一堂课 “爱的接力让我今天走上考场”|2023中考加油|今亮点

来源:新民晚报 2023-06-17 23:28:00

全球速看:广东多个能源项目已投用 超百万千瓦规模海上风电今年并网

来源:21世纪经济报道 2023-06-17 22:31:17

新资讯:谢逸枫:全国前五月卖地收入惨遭“断崖式下跌”

来源:谢逸枫看楼市 2023-06-17 21:23:15

微头条丨跨越时空的三个6月17日,值得铭记!

来源:央视新闻客户端 2023-06-17 20:54:03

三皇五帝时期的神话故事 三皇五帝时期 看热讯

来源:城市网 2023-06-17 19:58:43

蚌埠到南京牛首山一日游攻略_南京牛首山一日游攻略

来源:互联网 2023-06-17 19:06:30

当前观点:事发德国著名景区新天鹅堡!她被性侵者推下山谷死亡

来源:环球时报 2023-06-17 18:38:01

是青春啊!年年火出圈的青岛·巨能唱·大学毕业典礼又来了 当前热文

来源:互联网 2023-06-17 17:46:26

自酿葡萄酒用什么酒最好

来源:南方养生网 2023-06-17 17:04:56

焦点播报:“夜宿乌南”,今夜我们共成长

来源:百度新闻 2023-06-17 15:42:48

环球聚焦:海宁皮城:正推进数字化2.0建设 全力打造数字时代产业运行模式

来源:证券时报 2023-06-17 14:34:45

【健康解码】眉毛突然变长,是身体的什么信号?

来源:家庭医生名医在线 2023-06-17 12:17:37

上交所:本周对退市未来、退市辅仁、退市运盛、退市中昌、退市泽达、退市紫晶等退市整理股票进行重点监控 天天讯息

来源:南财快讯 2023-06-17 09:05:40

生态环境部郑重声明!

来源:券商中国 2023-06-17 08:22:57

紫光股份有限公司第八届 董事会第二十九次会议决议公告

来源:证券时报 2023-06-17 07:52:53

新能源汽车观察:为何销量向上,股价向下?-全球独家

来源:搜狐科技 2023-06-17 07:00:25

喝什么酒醉的最快?

来源:南方养生网 2023-06-17 05:35:05

德棍

来源:哔哩哔哩 2023-06-17 04:54:32

Adobe股票年初至今上涨30%

来源:互联网 2023-06-17 01:10:13

国联人寿保险徐州分公司因存在违法违规行为被银保监会徐州监管分局行政处罚_世界快报

来源:证券之星 2023-06-16 21:50:55

Copyright   2015-2022 西方知识产权网 版权所有  备案号:沪ICP备2020036824号-7   联系邮箱:5 626 629 @qq.com