STM32开发模板
Posted xhqinglin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32开发模板相关的知识,希望对你有一定的参考价值。
工作三年有余,这一段的历程中,由于工作性质的原因,开发了很多项目,因为软件工程师并不仅仅只是敲敲代码,包括前期设计、开发历程、文档梳理等等的工作,所以就在开发中逐渐的修改,基于STM32F103C8T6做了一套模板,所谓模板,主要完成了一些文档的框架设计,Boootloader的集成,还有就是APP软件中通讯协议集成。
如上图,由于自己也兼顾负责Windows桌面程序的开发,所以要处理好版本之间的对应关系,要有一个Version.xlsx文件负责对应STM32的底层代码版本与WPF桌面软件版本的关系。
如上图,在底层代码开发中,当然要有相应的开发记录手册,里面记录了你的开发历程,Code文件夹中就记录了你的每个版本。
上图就是最终每个版本设计的相关资料,我们首先了解一下文件的整理方式,有道云“一屋不扫,何以扫天下”,程序的梳理一直都是非常重要的。
如上图,为APP的文件,CM3文件夹一般放置一些跟启动文件、内核相关的文件;FWlib则放置标准库;List和Obj放置代码生成中的一些中间文件(Hex和Bin文件就在其中);Project放置工程文件;Readme.txt中包含一些说明文档,代码的使用方式及注意事项等等;最关键的是User文件夹,里面包含了你写的所有代码文件。
如上图,包含中断函数文件,配置文件,Main文件,还有就是你写的所有底层驱动函数。
如上图为底层驱动函数中的文件夹,每个文件夹包含相关的源文件与头文件,采用模块化的开发方式,将基础模块集成进相关模板中,将应用模块之间的耦合性尽可能的降低,这样对于后期的维护,和模块的移植都具有非常好的作用。
之前都是使用STlink进行程序下载与调试,由于工作的原因,一些程序需要升级,或者电路板已经密封无法提供下载接口,所以模板都采用Bootloader+APP的模式进行开发,通过STlink下载Bootloader程序到MCU中,以后代码的升级与调试都通过Bootloader提供的通讯接口来完成,这个通讯接口可以是USART、SPI、I2C等等都不受限制,Bootloader的设计接触过两种,一种是耦合性非常高的设计,APP中会有Bootloader的开关等等,这种设计会增加APP与Bootloader之间的联系,造成APP的故障引发Bootloader的故障,一般情况下不推荐,除非强实时性非常高的应用;另一种的设计,可以参考PC的设计,上电之后,给予一段时间的反馈(进入Bios),有反馈,则进入相关的升级流程,这种方式让Bootloader和APP没有任何关系,除了上电会造成一段时间的等待(当然这段时间可以设计的非常短),需要考虑的是这一段的等待会不会对其他硬件造成不在设计范围之内的问题(一般硬件设计都会考虑到这种极端情况),还要考虑升级中的验证问题,故障问题等等。
所以前两个文件,一个是Bootloader,一个是APP,由于USART比较通用,所以模板中采用的接口是USART,APP中除了包括正常的一些配置文件外,还包括必须的看门狗、滴答时钟、定时器,框架代码,框架代码可以程序按照模块进行开发,类似于面向对象的接口思想,还有就是通讯协议的代码,已经集成好相关的升级流程和后期的控制协议集成,主要是为了快速的上手项目和项目的稳定性考虑。
接下来的两个文件就是APP和Bootloader的流程图设计,设计的比较简单通用,主要是为了了解设计者的思想。
还有就是FLASH这个文件,这个文件一般是为了考虑外置存储器的配置说明,每一个字节的意义,当然若没有外置的存储器,这个会包括内置的FLASH说明,由于现有的模板没有考虑外置存储器的情况,但是Bootloader中升级流程中必须需要一个掉电不丢失的数据,所以取了STM32内置的FLASH的最后一个扇区作为存储器使用,这个FLASH就详细说明了这个扇区的相关配置。
跟硬件对接,最关键的就是相关IO的连接,IO配置这个文件,就包括了IO的连接关系,及IO的默认情况,IO的动作关系等等。
还有就是功能测试文件,这里面包含了相关的测试手段来保证代码的准备性和产品的完好性。
最关键的就是通讯协议这个文件,设计通讯协议时,当时考虑到通讯的乱码、误发等等因素,一种通讯协议时采用时间轮的方案进行设计,类似于485或者CAN中协议帧的判断,当时由于之前的经验没有采用这种方案;另一种方案是在内容上做些文章,通过增加协议内容的复杂性,防止协议的错误判断,包括包头,包尾,数据类型,数据对象,数据内容,校验等等之类的。
最后是一个升级文件,通过上位机的配合,将文件烧录进STM32的FLASH内。
思想决定高度,三个臭皮匠,顶个诸葛亮,欢迎各位大神指正交流。
联系方式:https://www.cnblogs.com/xhqinglin/p/9876333.html
以上是关于STM32开发模板的主要内容,如果未能解决你的问题,请参考以下文章