利用Simulink、STM32CUBEMX、STM32-MAT/TARGET自动生成简单的led灯闪烁代码(保姆级教程)
1.简介
这里利用基于STM32F103RCT6的一块自带led灯的开发板,首先通过STM32CUBEMX产生.ioc配置文件,其次对Simulink进行所必须的配置,然后利用Simulink的图形化界面实现简单的使led灯闪烁的逻辑框图,接着就是自动生成代码(生成keil工程文件),最后将代码烧录至芯片中便可实现led灯的闪烁。
注:
利用sumulink联合STM32CUBEMX开发stm32对软件版本要求很高,不适配的软件版本可能无法实现功能。
此文章使用的软件版本为:
MATLAB2018a、STM32CUBEMX6.3、STM32-MAT/TARGET4.4.2,该软件版本组合经实验无法实现正常功能。
这里给出几种版本匹配,经试验和网络总结,是能够正常生成代码的。
1、MATLAB2018a、STM32CUBEMX4.2.6、STM32-MAT/TARGET4.4.2
2、MATLAB2017a、STM32CUBEMX4.2.7、STM32-MAT/TARGET4.4.2
3、MATLAB2020a、STM32CUBEMX5.3.0、STM32-MAT/TARGET5.6.0
4、MATLAB2018b、STM32CUBEMX5.6.0、STM32-MAT/TARGET5.6.0
5、MATLAB2020b、STM32CUBEMX5.6.0、STM32-MAT/TARGET5.6.0
其中第四种软件版本组合是官方推荐的软件适配版本
STM32-MAT/TARGET官方下载连接
STM32CUBEMX官方下载连接
1.1 Simulink
Simulink想必大家已经再也熟悉不过了,Simulink是美国Mathworks公司推出的MATLAB中的一种可视化仿真工具。Simulink是一个模块图环境,用于多域仿真以及基于模型的设计。它支持系统设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。Simulink提供图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。Simulink与MATLAB相集成,能够在Simulink 中将MATLAB算法融入模型,还能将仿真结果导出至 MATLAB 做进一步分析。Simulink应用领域包括汽车、航空、工业自动化、大型建模、复杂逻辑、物理逻辑,信号处理等方面。
1.2 STM32CUBEMX
STM32CUBEMX是一个图形工具,可以通过一个循序渐进的过程非常轻松地配置 STM32 微控制器和微处理器,以及为 Arm Cortex-M 内核或部分 Linux 设备树生成相应的初始化 C 代码以用于 Arm® Cortex®-A 一个核心。说白了就是我们可以通过STM32CUBEMX以图形化的方式对STM32芯片进行配置,并生成相应的初始化代码。
1.3 STM32-MAT/TARGET
STM32-MAT/TARGET是Simulink中的硬件库,通过Simulink对STM32-MAT/TARGET硬件库的使用,我们可以实现一定逻辑的框图,以供Simulink的代码自动生成工具生成代码。
2.实现方案
2.1 利用STM32CUBEMX生成.ioc配置文件
我们通过access to mcu selector选择我们所使用的芯片型号
我们直接在Part Number输入STM32F103RC便可在右下角看到我们所需要的芯片型号
双击我们所需要的芯片型号
这时便可开始对芯片功能进行初始化配置,由于本开发板的led灯为PA8引脚控制使能的,所以首先将PA8引脚设置为GPIO_Output
接着配置时钟引脚RCC,高速时钟选择外部晶振即Crystall/Ceramic Resonator,如下图所示
由于我们使用的下载器为j-link,所以还要配置SYS,将Debug配置为串行线,即Serial Wire,如下图所示
配置完如下图所示
接下来对时钟系统进行配置,如下图红色方框所示
然后就是对工程文件的基本配置,这边将工程名设为light,工程位置设置在事先在桌面上建立好的light文件夹中,应用结构选择Basic,集成编译环境(IDE)选择MDK-ARM
然后点击File,将工程进行保存
这样我们就可以在light文件夹中找到如下配置文件
接下来进入matlab界面中,将light文件夹及其子文件夹添加到工作路径
然后打开simulink,创建一个新的空白模型,命名为ledflash,我们将其存储在与配置文件相同的文件夹中
接着还需要对该模型进行配置
点击方框所示按键,弹出对话框
按照如下步骤进行配置
利用simulink开发stm32所设置的采样频率在所生成代码中的体现
接下来就可以通过sumulink的图形化界面进行编程了
首先,从library browser的stm32硬件库中取出STM32_Config模块
然后双击该模块,选择我们使用stm32cubeMX所生成的配置文件
接着,再从library browser的stm32硬件库中取出GPIO_Write模块和从Sources库中取出Pulse Generator模块
进行下图所示配置和连接
然后点击Build Model,便可以在目标路径中生成keil 工程文件。
打开keil工程文件、编译、下载,在使用正确软件版本的前提下就可以实现led闪烁功能,所以要注意,一定要使用要求版本的软件。
可行的版本软件列在文章开头。
无法正常生成代码解决方案参考文章
利用Simulink、STM32CUBEMX、STM32-MAT/TARGET自动生成简单的led灯闪烁代码(保姆级教程)相关推荐
- 使用STM32CubeMX新建小熊派的STM32L431RCT6工程实现LED灯闪烁
目录 作者介绍 工程生成步骤 双击打开软件 新建一个工程 芯片选型 配置GPIO 配置系统时钟 设置目录.工程名.编辑使用的IDE等 生成工程 打开工程 打开工程的小插曲:STM32 Keil新建工程 ...
- STM32使用GPIO_WriteBit()函数使LED灯闪烁
文章目录 模仿四种方法点灯的示例程序,在工程模板上进行编写 分析LED_Init初始化函数 分析GPIO_WriteBit函数 杨桃32学习笔记,本文图片文字皆为转述 模仿四种方法点灯的示例程序,在工 ...
- 【QT】QT生成.exe安装包详细全文(保姆级教程)--打包软件及问题大全
缺少.dll文件的朋友,请跳转到我的另一篇文章"QT编译后的.exe文件运行时缺少一些.dll文件的解决办法[超详细教程,新手必备]",把问题解决再往下看. 一.前言: 最近,一个 ...
- STM32使用另外两种方法使LED灯闪烁
文章目录 GPIO_SetBits/GPIO_ResetBits函数介绍 第二种led闪烁语句 GPIO_Write函数介绍 第三种led闪烁语句 杨桃32学习笔记,本文图片文字皆为转述 GPIO_S ...
- 根据Word表格自动生成SQL数据库脚本的VBScript代码
这是几年前写的根据Word表格自动生成SQL数据库脚本的VBScript代码,最近修改了下(原来只支持单个Word表格)使其支持一个Word文档中的多个表格,生成的SQL文件名以Word文件名+.SQ ...
- CREO:CREO软件之工程图【表】之一明细表、表格创建、创建BOM球标、自动生成零件报表的简介及其使用方法(图文教程)之详细攻略
CREO:CREO软件之工程图[表]之一明细表.表格创建.创建BOM球标.自动生成零件报表的简介及其使用方法(图文教程)之详细攻略 目录
- STM32定时器控制LED灯闪烁及PWM练习
一.STM32定时器控制LED灯闪烁 1.相关配置 1)配置RCC和SYS 2)配置IO 配置PC15,并命名为D1. 3)配置定时器 选定时器2,配置Clock Source为Internal Cl ...
- 嵌入式作业STM32定时器实现串口通信及LED灯闪烁
目录 前言 一.什么是定时器 1.定时器与计数器 2. 定时器有什么用 3. 定时器的原理 4.时钟产生器和时基单元 二.用STM32CubeMx创建项目 1. 创建项目 2.配置RCC和SYS 3. ...
- STM32学习 3:GPIO管脚配置与第一个STM32实验:LED灯闪烁
STM32学习 3:GPIO管脚配置与第一个STM32实验:LED灯闪烁 1,GPIO管脚简介与配置 1.1GPIO框图 1.2GPIO不同模式 1.3 GPIO寄存器 1.4 GPIO库函数配置 2 ...
最新文章
- linux常见面试题
- matlab的讲稿ppt,Matlab初步(讲稿200508)之四
- turtle python tkinter_【案例】 什么?idle 中竟然有内置 turtle 样例?(paint)
- Arrays.asList 使用细节
- 【 .NET Core 3.0 】框架之二 || 后端项目搭建
- C#中谁最快:结构还是类?
- NGINX下配置CACHE-CONTROL
- elementui 嵌套表单验证_elementUI 表单嵌套表格验证,日期选择器联动限制等写法
- java中double除法和取余的若干注意
- java 基本语法 二_java基础语法2
- Impala和Inceptor的区别
- 信号与系统【奥本海目】第二版笔记
- 美容院管理系统哪家好?医美管理软件哪家好?
- 一步一步实现STM32-FOTA系列教程之BIN文件解包C语言实现
- 类人猿易语言云控系统开发 + 附加安卓模拟器中控+ 内存操控 系列课程
- 从语言之争到年龄焦虑
- DNS-over-HTTPS(DoH)简析与配置
- 问题:谷歌浏览器(Chrome)无法访问网站ERR_CONNECTION_REFUSED
- c语言2逻辑与2是1吗,2.C语言逻辑运算符和表达式
- 【分享】基于单片机嵌入式的家用智能节水淋浴控制器的设计-基于单片机的电子贺卡控制系统设计-基于单片机的倒计时牌控制系统设计-基于单片机的彩灯控制器系统设计-多模式彩灯-单片机的八路路数字电压表控制设计