我是靠谱客的博主 安静烤鸡,最近开发中收集的这篇文章主要介绍MATLAB/Simulink&&STM32CubeMX&&Keil工具链完成基于模型的设计开发(一)前言一、MBD概述二、硬件设计三、软件设计四、下载验证五、总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

入职一段时间了,需要不断充实自己的技能树,现在汽车行业控制器的开发大都基于“V”流程,采用基于模型开发的方式,此系列文章作为自己的学习记录

一、MBD概述

基于模型的设计(Model-Based Design,MBD),是一种围绕模型搭建展开的项目开发方法。该方法可避免繁琐的代码编写及调试过程,可极大提高项目开发效率,目前在汽车行业应用普遍

本文只是通过一个简单的示例来展示MBD的开发过程
设计需求:通过按键控制LED的亮灭状态,即按一次按键LED亮,再按一次按键LED灭
控制器:STM32F407ZG
应用层开发:MATLAB/Simulink
底层开发:STM32CubeMX
工程编译环境:Keil,在Keil环境中完成应用层与底层代码的集合,并通过编译下载到控制器

二、硬件设计

控制器:STM32F407ZG
MCU引脚:KEY0按键输入PE4;LED0输出PF9
在这里插入图片描述

三、软件设计

3.1底层配置

1、RCC设置为外接时钟,配置为168MHz
2、PE4设置为输入,上拉电阻;PF9设置为输出,上拉电阻,高速模式,初始化值为1;
3、设置IDE为Keil,生成代码
在这里插入图片描述
在这里插入图片描述

3.2应用层与底层的接口开发

在这里插入图片描述
在这里插入图片描述

Get_KEY0State()获取引脚PE4的状态;Set_LED0State(uint_8 PinState)通过LED0_State的值来设置PF9的状态,控制LED0的亮灭

3.3应用层开发

编程思路:检测按键状态,通过按键状态控制LED灯的状态切换
在这里插入图片描述

3.3.1按键处理函数

在这里插入图片描述
当检测到Get_KEY0State连续两个状态为0,则认为按键按下

3.3.2状态切换

在这里插入图片描述
每检测按键按下,切换一次状态

3.3.3仿真验证

在这里插入图片描述
在这里插入图片描述
模拟按键按下5次,LED的状态变化(初始状态为0:1 0 1 0 1
在这里插入图片描述
仿真结果符合设计需求

3.3.4输入输出信号类型设置

输入输出的信号名称及数据类型已经在Keil接口开发中配置好,设置输入输出信号为如下类型:
在这里插入图片描述
在这里插入图片描述

3.3.5代码生成配置

在这里插入图片描述
设置为离散求解器
在这里插入图片描述
STM32F407ZG为ARM CortexM4内核
在这里插入图片描述
在这里插入图片描述

3.3.6代码生成

Ctrl+B生成代码
在这里插入图片描述
在这里插入图片描述

3.4应用层与底层的代码集成

将Matlab生成的文件夹复制到底层生成的工程中:APP_LED
在这里插入图片描述
将APP_LED中的.c文件都添加进工程
在这里插入图片描述
添加APP_LED的头文件
在这里插入图片描述
添加APP_LED.h头文件
在这里插入图片描述
在主函数中调用APP_LED_initialize()初始化函数;调用APP_LED_step()函数,根据该函数的计算结果进行LED驱动
注:APP_LED_step()函数运行一次,相当于Matlab模型被运行了一次,在Matlab中设置该模型10ms运行一次,因此该函数在工程中也要确保10ms运行一次,为了方便在While循环中加入了10ms延时来近似模拟10ms运行一次的环境,实际工程中要用跟精确的延时,确保APP_LED_step()函数10ms运行一次
在这里插入图片描述

四、下载验证

在这里插入图片描述

五、总结

通过一个简单的示例,展示了STM32CubeMX+Keil+Matlab/Simulink工具链的使用方法,如果是复杂的逻辑运算及算法,在Matlab/Simulink中进行应用层开发,优势将非常明显。

最后

以上就是安静烤鸡为你收集整理的MATLAB/Simulink&&STM32CubeMX&&Keil工具链完成基于模型的设计开发(一)前言一、MBD概述二、硬件设计三、软件设计四、下载验证五、总结的全部内容,希望文章能够帮你解决MATLAB/Simulink&&STM32CubeMX&&Keil工具链完成基于模型的设计开发(一)前言一、MBD概述二、硬件设计三、软件设计四、下载验证五、总结所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部