标签:CubeMX
RTThread与CubeMX – (3)初识RTThread
说了那么多的CubeMX,现在终于轮到主角RT-Thread出场了。RT-Thread是一款开源的实时操作系统,代码完全开源,可以从官方网站下载,也可以从github上clone一个最新的版本。我选择从git上clone一个,这样能顺便追踪到我做的修改。
rtthread用了scons作为编译工具,这个工具是基于python做的。python算是比较奇葩的一个东西,2.x版本和3.x版本不兼容。这个工具是2.x版本的python做的,所以要用这个工具构建之前要先下载python2x,然后安装scons。用命令行切换到scons解压后的目录,运行python setup.py install,就能安装scons了。如果提示“python不是内部命令或可执行程序”,说明python没有添加PATH环境变量中,可以通过在“我的电脑”中修改全局环境变量,也可以在命令行中用“set PATH=%PATH%;C:\Pyhton27”命令将其加入环境变量,不过这样的环境变量在命令行窗口退出后就失效了,好处是不会修改全局的环境变量。我比较喜欢这样的方式,建立一个bat文件,把设置环境变量的工作放在bat文件中,并启动一个命令行界面,然后在这个命令行界面中编译代码。下面是我建立rtthread编译环境的bat脚本代码,先设置pyhton和scons的目录,然后启动cmd。在这个bat文件执行后启动的命令行界面中执行 scons –target=”mdk5″ 就能进行rtthread的编译了。
set PATH=%PATH%;C:/Python27;C:/Python27/Scripts cmd
RTThread与CubeMX – (2)修改CubeMX生成的代码
在CubeMX中配置好后,自动生成的代码只需要再添加少量的代码就可以运行了。比如上一篇的点灯,只需要在main函数的大循环中添加几个控制引脚的代码就可以了。HAL库通过systick帮我们实现了delay的功能,只需要调用就行了。
/* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */
CubeMX生成的代码,像上面这样有很多USER CODE BEGIN,USER CODE END的代码,据传这样的代码是为了让CubeMX在原来工程的基础上生成新代码的时候,可以保留这样的注释对中的代码。对于这个功能我没实践过,我只是用CubeMX来生成初始化的代码,还没有试过在代码已经有修改的情况下再次使用CubeMX生成代码。因为CubeMX重新生成代码的时候会将所有的库都重新复制一次,并且修改工程文件,导致所有代码都得重新编译,不是很方便。
为了让后续的rtthread跑起来,还得加入对串口的支持。
RTThread与CubeMX – (1)初识CubeMX
手上有一块很早之前申请的STM32F767ZI Nucelo开发板,一直放在那里吃灰。这块板子上的F7是STM32系列比较高端的型号,自带2M Flash和512K的RAM,可以跑到216MHz。ST逐渐将开发库从以前的标准准转换到了HAL库,之后的高端型号更是只提供了HAL库,没有标准库。这块板子上的F7就只能用HAL库来开发。我这个只用过标准库的老古董也要开始学习HAL库了。我想既然都用HAL库了,何不一步到位把CubeMX也用上。ST出了一个图形化的配置工具CubeMX,这个CubeMX可以用图形化的方式配置芯片各功能,并且能够检测配置冲突,对于功能复杂引脚多的芯片,图形化配置很方便。这个工具还能根据配置生成报告,适合拿来做成报告的内容。
CubeMX对官方的开发板进行了预定义,可以直接选开发板,选好之后会对板上的功能进行预初始化,比如引脚别名之类的。
RTThread与CubeMX – (4)整合RTThread与CubeMX
2017-10-09
CubeMX, rtthread
RTThread与CubeMX – (4)整合RTThread与CubeMX已关闭评论
xtoolbox
CubeMX生成的代码结构如下
CubeMX在生成代码的时候可以选择是否要把库复制到工程所在目录,为了减少外部依赖,我选择把库复制到工程中,这样在生成的工程目录中就包含了库相关的文件。Read More »
CubeMXC语言STM32