首先要根据要开发的功能,查阅外设的数据手册,找到相应的寄存器
根据寄存器的说明。逐位进行寄存器的读写配置
后期维护或者调试,也需要根据外设的数据手册,进行纠错
寄存器开发的优缺点
优点:
程序运行效率高,需要那个寄存器就配置那个寄存器,冗余代码量少
缺点:
如果遇到下列情况,使用寄存器开发的难度会大大提高
遇到大型项目或者需配置寄存器数量较多时,需要频繁翻阅数据手册,影响开发效率。过于依赖数据手册
程序如果需要移植,那么底层很多的寄存器 *** 作需要重写。程序可移植性差
后期维护后者调试的时候,如果没有数据手册,很多寄存器的读写很不好理解。程序可读性差
库开发的基本流程
根据要开发的功能,查看库接口文档,找到所需的函数,结构体或者宏定义
调用相应的函数接口,声明结构体或者使用宏定义的方式去实现功能
后期维护和调试,由于重新封装了直观的函数,结构体和宏定义名称,可以不用过多参考库接口文档
库开发的优缺点
优点:
相对于寄存器开发,在遇到如上相似的情况时,库开发洞逗就更具优势
遇到大型项目或者需配置寄存器数量较多时,可以直观的 *** 作想要的寄存器。开发效率较高
程序如果需要移植,底层只需要进纳核卖行小的改动即可在新平台上使用。程序的可移植性较高
后期维护或者调试,不过于依赖技术手册。程序可读性高
缺点:
由于库对底层的寄存器,某些结构体等重新进行了宏定义的类型定义,所以抽象结构上多了一层库函数层,实际程序运行时也需要处理更多的代码
结论
随着技术的进步和社会氏纯需求的提高,STM32的需要调用的外设资源会越来越多,且要处理的项目也会趋于大型化和复杂化,这给项目的前期搭建和后期维护带来很大的挑战——如何高效的调用资源实现需求,如何高效的修改程序Debug
库开发使用了封装的概念很好的解决了这些问题。封装就是把一个抽象的事物的属性及属性相关的 *** 作函数打包在一起,外界的模块只能通过这个抽象事物对外提供的函数接口,对事物的属性进行访问。封装使得上层使用者只需要调用接口,无需过于关心寄存器 *** 作是怎么实现的,从而更高效的解决需求
我学的是DSP2812,中断向量表我都是薯雹直接从范例工程中拷过来用,需要哪个中断就在哪个里面编写中断服务程序。编程的初始化程序这些都是拷过来做少量修改甚至不用修改,用就可以了,寄存器的配置一般都是拷过来修改值就行,运算逻数仿帆辑程序需要用自己编。
你先看看范例程序,找找各范例程序的区别,你会发现很多都只需复杂过来组合上用就可以了。
以太网为例:数据包封装解析的程序都是有的,复制过来大宽几乎不修改就可以用,以太网的范例程序里面的以太网寄存器初始化部分一般都是单独的子函数,你看懂了复制过来用就可以了。。。。
我用DSP做:eCAN、以太网、液晶显示、PWM这些都是这样做的,你看懂范例程序后找程序之间的区别就懂了。
不知道对你有帮助没,呵呵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)