前言
在学习PID的时候,突然看到这么一片文章,使用STM32MatTarget和stm32cube生成嵌入式算法代码,就直接去官网搜了一下,结果STM32MatTarget 4.4.2这个包已经不受官网支持了,但却发现了替代的东西,
那就在这个基础上进行生成stm32代码吧。
一、MathWorks Embedded Coder Support
首先我在MATLAB的安装功能里找了好久也没发现有这个功能,就只好再去官网帮助里面搜了一下,原来这个是额外的安装包,需要额外支持的。
我使用的是stm32的芯片,自然是下载cortex-M的芯片支持包,这个确实不太好找,需要的同学可以点击这里下载:https://ww2.mathworks.cn/hardware-support/arm-cortex-m.html
这个是需要登录自己的mathworks账号的,没有的自己新建一个就行,只下载这个是不会收费的。也可以在我的资源下下载,我放在我的资源里了,包括下面用的安装包,https://download.csdn.net/download/bing_xin_/88269091
下载下来的文件其实也只是一个下载链接,需要使用MATLAB打开,在MATLAB 左边的资源框里双击,按照提示安装就行了,不过这里第一次安装的时候还是需要登录下自己的账号。
二、模拟器支持和F4安装包支持
在摸索的过程中总会报错,这里就不让你们走弯路了,还需要下载两个安装包,就是上面图片显示的两个,在下载完armcortexm之后按照MATLAB例程里面用的时候总是报错,所以下载了第二个模拟器的安装包,
官方下载路径:https://ww2.mathworks.cn/matlabcentral/fileexchange/57465-embedded-coder-interface-to-qemu-emulator?s_tid=srchtitle_support_results_10_getQEMUEmulatorAddOn
但是这个只是cortex内核的代码,要在stm32f4上面运行,还得下载f4的支持包:
官方下载链接:https://ww2.mathworks.cn/matlabcentral/fileexchange/43093-embedded-coder-support-package-for-stmicroelectronics-stm32-processors
另外,在这一步的安装时候,会提示安装第三步的st官方包,直接跳转过去进行下载安装就可以了,详情请看第三步以及官方引导。
三、st官方支持MATLAB包
除了在MATLAB官方下载支持包,还需要在st官方下载stm32f4的支持包,也可以在这个关联资源上,我已经放上去了,
这是官方的下载,自然也是需要登录账号:https://www.st.com/en/embedded-software/stsw-stm32068.html?dl=Vc1z3KzO2a9jy%2BmymPHzAQ%3D%3D%2Cnegwagi4jxMBqKVVdccqfOk%2FCPrtr%2FCXK5Em8kc5TiBrNXqJH8Du4bJ6FnYs9qGgMekWqQ06DwDacxg4CXEXrMzXIcIItk4M4rcdbz2q9IHmoTlGZyYR0BcN3pE0J3WgmvnC6copofQ0qv0HJizd2736MtNUbtyjBg1jJrVG6ReiGSZYySXGusyY7WwCjOqXoYszrw1FN0hySJEKdKmh3M8lGimu8lS30WxMwxZ%2BfNDJXbEQCT28%2BcUZ4jh%2FcCIAZZ2h82Y%2BZnAMYz7zp2CFPHUV2QkavOLZv2bOJXdxUtyJwFrElBVcoCQ5g8b%2BB5%2Fw
下载解压后的文件如下,将文件复制到你自己存放MATLAB资源的目录,目录除了不能带有中文以外,还不能带有空格,特别是你新建项目所在的工程目录下,这是因为GCC编译器不能识别带有空格的目录,我这个报错也是查了好久才查到的。
四、根据官方项目生成stm32代码
因为只是了解,这个就不自己新建一大堆项目去一个一个来了,直接查看官方的帮助文档:
可以在这里直接打开模型,然后将这个模型另存到自己的资源目录下,因为原目录下是有好多模型的,而在生成代码的过程中也会生成好多文件,会将原来的目录弄得乱七八糟的,也不好查找。
在按照官方步骤走之前,还需要将你自己资源的目录添加到MATLAB路径下,
点击主页下的设置路径,
直接选择添加并包含子文件夹,直接一次就可以添加完成了,然后就可以按照官方的帮助一步步走下去。
总结
由于我手边没有带有USB资源stm32f4的板子,所以就没办法直接下载,在我修改GPIO为我自己板子呼吸灯的GPIO后,使用直接生成的.hex文件下载到板子中,程序正常运行,完成。
其实感觉这个暂时不是太好用,最有意义的地方可能就是用 simulink模拟算法仿真生成C语言代码,然后移植到嵌入式当中,真的做嵌入式,灵活性和方便性都还是不如自己写代码的。