IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F407ZGTx+simulink+STM32CubeMX+keil stm32-mat/target实现simulink生成单片机代码 -> 正文阅读

[嵌入式]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,先编译,再烧写。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:57:40  更:2021-08-02 10:59:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:25:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计