STM32使用simulink编程

第一部分

  • 首先你要下载STM官方的32的simulink包 STM32-MAT网址链接
  • 然后解压出来进行安装,安装地址自行拟定,打开安装目录,你会看见startuop.bat文件,双击运行后会自动打开matlabSTM32使用simulink编程_第1张图片
  • 点击设置路径,然后把你安装的那个文件夹添加进去,然后点击保存STM32使用simulink编程_第2张图片
    STM32使用simulink编程_第3张图片
  • 第一部分完成。

第二部分

  • 打开你安装的cubemx,选择你的芯片型号,配置你需要的外设,我这里只配置了一个时钟,下载和LED
  • 然后配置你工程的名字,选择工程路径,选择你的MDK,然后在Code Generator勾选生成单独的.c和.h
  • 最后再File里选择save project,你将会在路径文件夹里看到一个蓝色的ioc文件,这就证明成功了
    STM32使用simulink编程_第4张图片
    STM32使用simulink编程_第5张图片
    STM32使用simulink编程_第6张图片
    STM32使用simulink编程_第7张图片

第三部分

  • 我建议你创建的simulink工程文件和ioc文件只有一文件夹之隔,或者他俩直接在一起。
  • 如果你是直接打开simulink创建的工程,那么matlab的外边的目录很有可能不是你工程的目录,记得把这里换成你工程的目录
    STM32使用simulink编程_第8张图片
  • 剩下的参考大神的博客手把手教你使用simulink配合STM32CUBEMX
  • 如果灯不闪烁,去主函数看看,matlab的代码是不是已经在主函数里了
  • 你生成的时候还有可能出现Block diagram error,这个错误可以把固定步长那改为0.001试试

BUG

  • if ((217056256 == shunfeng_B.CAN_Read_Data_o2.ID) && (4U == shunfeng_B.CAN_Read_Data_o2.Extended) )
  • 问题就是过大的CAN ID,会导致接收数据不成功,经过keil的Debug排查发现是4U这里出问题了,生成的代码为1,需要自己手动改变
  • 串口接收也有问题,多次发送后会出现bug,需要找到他真实运算的数组,我这里是test_3_B.USART_Receive_o3,然后将串口的callback,HAL_UART_RxCpltCallback,内容改成
  • 回调函数在test_3_USART.c文件里,matlab文件夹下
  •   void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
      {
        HAL_UART_Transmit(&huart1,test_3_B.USART_Receive_o3,7,0xff); //用于监控
      	HAL_UART_Receive_IT(&huart1,test_3_B.USART_Receive_o3,7); //真正接收
      }
    
  • 这里7是你接收的长度,这样的话第一次发送是无效的,需要在while上提前调用一次HAL_UART_Receive_IT(&huart1,test_3_B.USART_Receive_o3,7);

你可能感兴趣的:(单片机,matlab,stm32)