STM32
直播中

h1654155275.5741

7年用户 1013经验值
私信 关注
[问答]

如何去开发一种基于Simulink和CubeMX的STM32代码呢

怎样将Simulink和CubeMX工具更好地结合起来呢?
如何去开发一种基于Simulink和CubeMX的STM32代码呢?

回帖(1)

王建国

2021-11-18 11:59:13
  最近发现ST有一个Simulink的库,可以直接在Simulink中配置需要的功能,而底层在CubeMX中直接配置就可以。
  对于嵌入式开发的朋友来说,CubeMX应该都不陌生,它解决了繁琐的底层配置过程,虽说我已经感觉省了很多麻烦,但还是会因为功能代码复杂的逻辑和编写过程头疼半天,或者因为某个不知道的函数而百度半天。发现了Simulink的这个作用之后,我简直惊呆了,这对我来说无疑是一个宝藏,于是赶紧开始学习尝试,接下来把整个教程分享给大家,感兴趣的一起来看。
  首先我们需要去ST官网下载Simulink相应的库。
  
  直接点击“Get Software”就可以进行下载,在ST官网下载需要注册登陆账号,嫌麻烦的朋友也可以直接去公众号找我要。
  
  下载之后的文件如图,我们先打开Readme来看一看。
  
  直接翻到这里,告诉了我们导入库的方法。
  先在MATLAB的命令行中输入 “ pathtool ”,然后选择刚下载的文件夹导入,点击保存。
  然后我们在MATLAB中打开Simulink,新建一个空白模型。
  然后点击设置按钮
  
  在这里我们需要对生成的代码进行一些设置。
  先打开“ Solver ”,将步长改为1/10000.
  
  点击“ Code Generation ”,
  
  点击“ Browse ”
  
  选择“ stm32.tlc ”,点击OK。
  
  在“ Code Generation ”的下拉栏中打开“ STM32 Options ”,勾选“ STM32CubeMx Path update ”,并且点击自动更新路径按钮“
  Update installed path” ,点击OK。
  
  这样前期设置工作就已经完成了,接下来先打开CubeMX进行配置。
  我这里用的是F1的芯片,虽然官网说只支持F4,但我看着所有应该都支持。
  这里想要PC8三秒转换一次高低电平,PD2两秒转换一次高低电平,我们把这两个引脚都设置为输出模式,“GPIO_Output ”
  
  这里设置时钟
  
  使用外部定时器,这里我用的是TIM1.
  
  设置好之后点击生成代码。
  
  
  完毕之后先不要打开,点击“ Close ”。
  这样CubeMX的配置就全部完毕了,我们关掉它再回到Simulink。
  打开元件库,会发现有一个STM32的库
  
  点击MUC CONFIG,拖动一个到模型中。
  
  双击进行设置。
  
  点击“ Select STM32 configuration file ”按钮,选择刚才CubeMX中配置好保存的ioc文件。
  
  点击OK
  
  接下来在库中点击GPIO,拖动一个“ GPIO _Write”到模型中。
  
  
  再复制一个,分别双击进行设置。
  分别勾选PC8和PD2,点击OK。如果几个引脚同为一个GPIO,就可以在一个模块中进行设置。
  
  
  
  接下来在库中拖动一个矩形波模块,如图进行连接。
  
  接下来设置矩形波参数,一个周期为6,一个周期为4.
  
  之后我们可以先打开示波器看一下两个引脚进来的波形。
  
  示波器显示波形如下。
  
  符合我们的需求。
  接下来我们就可以生成代码了,之前记得先把示波器去掉。
  直接点击“ Build Mode”按钮。
  
  完成之后我们直接打开代码。
  
  我们打开生成的C文件,将生成的功能函数复制到main.c中mian函数的while中,只有一个函数。
  
  最后编译一下。
  
  我们将代码Debug一下,查看两个引脚输出的信号。
  
  和我们预想的一致,大功告成!大家也可以自己下载到板卡中观察。
  从这一个小小的例子中不难发现,将Simulink和CubeMX两个工具结合起来使用无疑减轻了我们很多的工作量,也不需要去思考令人头疼的代码逻辑,利用框图的形式来配置代码,也可以使整个功能逻辑变得清晰起来,而不需要盯着一堆代码去调试,可以说非常方便了!
  在官方文档中也有其他模块的使用方法,大家感兴趣的可以自己去看看。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分