月份:2017年10月
RTThread与CubeMX – (4)整合RTThread与CubeMX
CubeMX生成的代码结构如下
CubeMX在生成代码的时候可以选择是否要把库复制到工程所在目录,为了减少外部依赖,我选择把库复制到工程中,这样在生成的工程目录中就包含了库相关的文件。Read More »
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跑起来,还得加入对串口的支持。
STM32F767 Nucleo之RT-GUI实验
2017-10-10
嵌入式
10 Comments
xtoolbox
STM32F767 Nucleo是ST官方出的开发板,板子上引出了大量的管脚便于评估。板子上还有一个带串口功能的ST Link调试器,用于对767芯片进行调试,一些基础功能的评估在这一块板子上就能搞定,不需要额外的开发工具了。
我在这块板子上用rt-gui实现了一个计算器,屏幕数据通过USB摄像头来显示,鼠标和键盘数据通过自定义USB HID设备传送给开发板。PC端显示程序运行后效果如下:
PC端是一个简单的Qt程序,一边读取摄像头数据进行显示,一边将鼠标和键盘事件通过HID设备发送给开发板。这个程序的源代码在这里。如果有多个摄像头,可以用PageDown和PageUp按键进行切换。开发板上的程序在这里,采用rt-gui制作界面,用F767的jpeg硬核进行图片压缩,通过开发板的USB接口发送到PC端。
设计过程
Read More »
C语言nucleortthreadSTM32