刚开始学习利用Simulink自动生成可以在STM32单片机运行的代码,摸索的过程中遇到了很多挫折,希望以这种方式来记录自己的成长与进步,以下的四个案例花了将近4天的时间,经过亲自测试均可正常运行

配置环境:MATLAB2018b,STM32CubeMX-5.4.0,STM32MatTarget_5.4.0,Keil MDK5

单片机:STM32F103ZET6

CK_1功能:单片机发送任意长度数组给上位机。

注意数组的输出数据类型要选择为uint8。不要删除两个getBuffPtr文件,生成代码后将getBuffPtr的头文件和源文件分别复制到生成的Inc和Src文件夹中,先将源文件getBuffPtr添加到Keil的Application/User中,然后再编译下载。

注意:如果找不到getBuffPtr文件,请在STM32MatTarget的安装位置拷贝,默认的安装路径为:C:\MATLAB\STM32-MAT\ STM32\addSrc\inc和\src。

如果找不到S函数RcvUsartBuf,请从STM32MatTarget的官方demos里拷贝,默认路径为:C:\MATLAB\STM32-MAT\STM32\STM32demos\Test\USART\F407 VGTx-Discovery\USART_3_Receive_Send

simulink开发STM32串口函数

simulink开发STM32串口函数simulink开发STM32串口函数simulink开发STM32串口函数

CK_2功能:上位机发送10个字符给单片机,单片机收到后再返回给上位机

simulink开发STM32串口函数

simulink开发STM32串口函数

CK_3功能:上位机发送10个16进制数给单片机,单片机收到后返回给上位机,如果发送的第一个数为0x55,同时灯LED0会亮,否则灯不亮

simulink开发STM32串口函数

simulink开发STM32串口函数

CK_4功能:上位机发送10个16进制数给单片机,如果第一位为0x55且最后一位为0xAA,则单片机返回从0到10的10个16进制数,且每发送一次,返回一次;否则单片机不返回任何数据

注意不要删除两个getBuffPtr文件,生成代码后将getBuffPtr的头文件和源文件分别复制到生成的Inc和Src文件夹中,先将源文件getBuffPtr添加到Keil的Application/User中,然后再编译下载

注意:如果找不到getBuffPtr文件,请在STM32MatTarget的安装位置拷贝,默认的安装路径为:C:\MATLAB\STM32-MAT\ STM32\addSrc\inc和\src

如果找不到S函数RcvUsartBuf,请从STM32MatTarget的官方demos里拷贝,默认路径为:C:\MATLAB\STM32-MAT\STM32\STM32demos\Test\USART\F407 VGTx-Discovery\USART_3_Receive_Send

simulink开发STM32串口函数

使能子函数:

simulink开发STM32串口函数

校验子函数:

simulink开发STM32串口函数

发送子函数:

注意1:输入数据的格式为uint8,输出端口Output when disable选项设置为reset,Initial output设置为0

simulink开发STM32串口函数

simulink开发STM32串口函数

simulink开发STM32串口函数

相关文章:

  • 2021-12-23
  • 2021-05-21
  • 2022-02-24
  • 2021-08-25
  • 2022-02-19
  • 2021-11-13
  • 2022-03-13
  • 2022-01-25
猜你喜欢
  • 2021-06-13
  • 2021-12-23
  • 2021-05-08
  • 2022-01-08
  • 2021-08-05
  • 2021-11-17
  • 2021-12-23
相关资源
相似解决方案