今天这篇博文主要是复习复习前面的内容,这两天因为一些小原因没有跟新学习的进度。
其实现阶段的学习就是主要学习stm32的一些主要的外设的使用,要用这个外设之前,最终的是先搞清楚它的定义是什么,比如GPIO这个外设,从字面意思来讲就是通用的输入输出端口,还需要搞清楚的是输入输出的究竟是什么,说白了就是高低电平,要清楚它的具体功能,还是要看组成它的寄存器,我给他分了四类,1.输入/输出寄存器;2.清除位/设置位寄存器;3.输入/输出模式配置寄存器;4.端口配置锁定寄存器。
GPIO对于不同场景的应用,都是通过对以上四类寄存器(共七个)来完成对应的需求的,LED的应用就是通过输出数据寄存器配置高低电平来控制亮灭,通过输出模式寄存器来配置输出的模式。
然后就是程序的编写,其实以上通过配置寄存器可以很轻松的达到目的,不过我更喜欢库函数的方式,只因他会更美观清晰,虽不如操作寄存器来的直接,但优秀的程序不是硬碰硬的暴力美学,而是经过修辞让人更易理解,且不失本意的艺术品,当然这是丹尼斯,林纳斯等业界大佬的才具备的手法,像我这样的菜鸟还是先改改自己的BUG吧,说了这么多,其实就想说,C语言是真的成熟,优秀。
上一段有点跑题了,不过没关系,我还想说一句,“站在伟人的肩膀上”,这句话真的很诚实,当我们没能力创造美好的东西,就去好好的学会使用它吧,有人创造了C语言,又有人创造了标准外设库,感恩ing,我能做的就是先学会使用它。
上一段还是跑题了,还是说说标准库吧,stm32的标准库我只用过f1系列,不过单单这个系列的库,我个人感觉就做的很成熟了,将内核外设封装的都很好,通过结构体,将各个外设的寄存器包含其中,再用其他结构体定义相关的模式,最终完成的一个外设的初始化结构体,对于不同的应用场景,通过这个结构体就可以配置对应的工作模糊,一般,各个外设之间的关系有串行和并行两种(个人认为),串行:就是一个外设的工作,需要事先配置其他的外设(比如串口的使用,会先配置对应的GPIO端口引脚作为其数据传输的信号线),并行:就是一个外设的工作,会通过另外两个或以上外设来完成配置(比如串口的使用,不仅会使用到外设GPIO,还会使用到外设RCC);这种路线的方式对我来讲会更容易理解和解决问题,一条线路的正常使用与否,就看其串行路线和并行路线配合状况。
其实GPIO这个外设的学习内容还有很多,得在实际的应用中去体会,怎么说都很抽象,具体运用的时候就知道这个家伙是使你喜还是令人忧了。