本次我们来分析一下BlueMicrosystem1_V3.2.0,上一篇帖子我们已经讲了官方提供的几份代码的区别,我们也就很清楚这其中的区别在什么地方,能够针对自己的应用场景和项目设计进行代码的取舍和裁剪。
这几份代码很类似,在功能上有自己的不同而区分。所以我们只需要通读一份代码,基本其他的代码也就很快上手了,所以我们在这里选择这份代码进行一个细致的剖析,帮助大家对代码的实现有一定的了解,学习这种软件流程的思想和针对不同平台考虑移植性的代码写作方法。
首先我们看一下main函数的执行流程:
while(1)当中的执行流程:
对于main函数当中的HAL_Init和SystemClock_Config这两个函数我们就展开,一个初始化Systick和NVIC组,另外一个是初始化时钟我们就不说明了。
我们看下InitTargetPlatform这个函数:
下面我们看下OSX_BMS_PRINTF:
这个的定义是在Osx_bms_config.h下面定义的,定义内容如下,我们可以看到这里如果要使用这个功能的话我们是需要定义一个宏OSX_BMS_ENABLE_PRINTF,并且还是需要定义板子的类型是什么才能够使用。
但是在这段代码前我们看到这功能已经是被注释掉了,所以默认是没有开启这个功能的,如果需要用到这个功能直接在这里取消注释就可以了。
注释了之后我们将程序下载进入连接USB口的时候会出现一个STM32 Virtual COM Port 。注意代码中是没有定义这个STM32_SENSORTILE宏的,那么在keil中是定义在哪里的呢,看下图:
这个端口是没有驱动的,我们需要安装,已经上传到附件中了,大家可以自行下载这里我们说一下安装方法。压缩包里面有一个安装文件:
打开这个文件进行安装,安装的时候要注意一个路径的问题,要先记住这个路径:
安装完成之后我们就要进到这个文件夹中,选择自己对应的操作系统:
对应自己电脑系统是几位的电机对应的文件,amd64是64位,x86是32位的,双击这个exe文件就可以自动安装了。
完成之后我们就可以在windows的设备管理器中看到这个设备了:
到这里我们打开串口助手就可以接收到相应的调试信息了:
这里还有一个小技巧就是我们使用keil编译代码的时候,我们如果需要使用右键跳转到函数定义的功能,那么我们在编译的时候是需要编译一个browser信息的,因为工程比较大,所以如果包含browse 信息来编译的话速度比较慢,如果你觉得这样的效率很低可以把这个选项去掉,使用source insight来编写代码和查看代码,用keil来编译就可以了,这样效率会高一点。
本次的分享就这么多了,大概讲了一下BlueMicrosystem1这个工程的流程和其中的一个调试手段,对于BlueMicrosystem1和BlueMicrosystem2只要理解一份代码就可以了,因为两个工程是很类似的,只是功能上有少许差别,后面我们看下sensortile自己特有的工程。
本帖最后由 michael_llh 于 2017-4-26 22:43 编辑