我是靠谱客的博主 爱撒娇手机,最近开发中收集的这篇文章主要介绍STM32F407ZGTx+simulink+STM32CubeMX+keil stm32-mat/target实现simulink生成单片机代码配置环境运行流程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

配置环境

使用的板子是正点原子STM32F407ZGT6,这个应该没有要求,任意版本均可。
stm32 mat/target,是一个matlab插件。可能不会再更新了,起到的作用是让simulink生成代码时触发cubemx。对版本的要求比较苛刻,我采用的是最新版本,在开发文档中可见对matlab与cubemx版本有要求:
stm32-mat/target对matlab、cubemx的版本要求
实际测试中我尝试了matlab R2018a与matlab R2020b,以及CubeMX V6.3.0,代码生成都存在问题。目前的尝试中没有发现第二种能够正常运行mat/target的环境,建议按照开发文档要求的版本使用,即MATLAB R2018b+STM32CubeMX V5.6.0
安装方法:setup后找到安装的文件夹,然后在matlab界面设置路径->添加并包含子文件夹->导入setup的安装路径,如图,STM32那一级文件夹是我的安装路径:
导入插件到matlab

STM32CubeMX,注意选要求的版本

MATLAB R2018b

引用其他人Keil 5.27,CubeMX在5.6只支持Keil 5.27的生成(或许对Keil高版本也可以用,没有尝试)

或许使用Keil之外的软件也可以进行烧写,即STM32CubeMX配置时生成器的更换,暂时没有尝试。

运行流程

STM32CubeMX生成.ioc工程文件

我配置了烧写端口(使用ST-link仿真器)与晶振时间端口,然后设置PF9与PF10为GPIO output(我板子上LED灯的端口),共占用8个
设置烧写口为JTAG4pin形式
两个LED灯端口

然后进行工程设置,重点是ToolChain/IDE ,这里我们选择MDK-ARM V5.27,适配Keil 5.27版本
工程设置
这里重点是第一栏,最好选择Copy only the necessary library files,否则项目的Drivers会变得很大(100M+),不便于项目移动
工程设置
到这里之后按Ctrl+S保存项目即可,无需点击generate code,路径下就会生成一个.ioc文件

Simulink

STM32_Config

首先在matlab里使用cd切到.ioc所在路径(否则simulink生成会出问题),然后打开simulink,先拖入STM32_Config模块:
MCU config,读取.ioc路径
在其内部点击Select STM32 configuration file,选择路径下的.ioc,完成config链接。
MCU config内部配置

simulink config

然后进行simulink工程config,我设置如下:
将解算器设置为离散化,并给出步长(这个步长应该和单片机频率无关,估计只是在仿真里用)
Solver离散设置
代码生成这里的配置要改成使用stm32.tlc
stm32.tlc
有一些教程指出这里的三个comments框也要打上,我使用中没有出现明显问题,这里不打或许无影响(我观察中仍然生成了注释,不知道这里勾选有什么影响),如果发现有问题可以勾选试一下。
Comments配置
这一页中要设定STM32CubeMX启动路径,通常点击Path update框后,点击Update installed path,就会自动搜索CubeMX路径,等待一会后自动完成。
Cubemx路径

GPIO config

之后加入功能模块,我这里需要改变GPIO的状态,所以选Target Support Package里面的GPIO_Write。刚加入可能会报错:
加入GPIO_write后的报错
此时只需要保存自己的simulink模型(.slx文件),然后关闭再打开,GPIO_write模块就会读取正确的端口。如这里显示的GPIOA是错误的,实际上并没有打开A端口,并且点进去也都是全灰端口,无法使用。但重开后模块上的显示变成GPIOF,点击后就有9pin与10pin的可用复选框,与CubeMX中的设置一致。
在这里插入图片描述
这里勾选Pin可使GPIO_write多出一个输入端口,可连接simulink中的信号源等,产生需要的输入:
两个矩形波
我这里加入了两个占空比不同的矩形波信号。

build model

也可以先运行一下,看看各处信号的输出是不是符合预期。
然后就可以进行build model:
build model
注意正常的运行会在build过程中启动STM32CubeMX,并且触发了它的generate code,如果没有触发则生成失败(可以看下STM32CubeMX版本是否是5.6,在我的测试中6.3就不能被触发)
之后目录就会出现Src等文件夹,注意到其中的main.cpp的主循环中包含逻辑:
main.cpp
如果发现while内是个空循环,可能是matlab版本有问题,我在使用2020b版本时while内就为空。

keil

从MDK-ARM文件夹中启动Keil,先编译,再烧写。

最后

以上就是爱撒娇手机为你收集整理的STM32F407ZGTx+simulink+STM32CubeMX+keil stm32-mat/target实现simulink生成单片机代码配置环境运行流程的全部内容,希望文章能够帮你解决STM32F407ZGTx+simulink+STM32CubeMX+keil stm32-mat/target实现simulink生成单片机代码配置环境运行流程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部