simulink开发STM32串口函数

刚开始学习利用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串口函数