matlab1028b以上
stm32cubemx5.6.0以上 从正点原子下载,百度的可能存在java问题
stm32-mat/target 教程与代码分享 - 知乎
安装好这些后,打开matlab,打开路径STM32-MAT\STM32

打开MATLAB,在设置路径中添加STM32-MAT/TARGET文件夹路径
打开simulink,view-lib 可以看到

在simulink中先点击保存工作区,再打开设置
在STM32CUBEMX完成底层配置,生成ioc文件






 




void untitled_step(void)
{
  /* S-Function (GPIO_Read): '<Root>/GPIO_Read' */
  {
    rtDW.GPIO_Read = (boolean_T)HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3);
  }
  /* Logic: '<Root>/NOT' */
  rtDW.NOT = !rtDW.GPIO_Read;
  /* S-Function (GPIO_Write): '<Root>/GPIO_Write2' */
  {
    if (rtDW.NOT == 0)
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
    else
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
  }
  /* S-Function (GPIO_Read): '<Root>/GPIO_Read1' */
  {
    rtDW.GPIO_Read1 = (boolean_T)HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_4);
  }
  /* Logic: '<Root>/NOT1' */
  rtDW.NOT1 = !rtDW.GPIO_Read1;
  /* S-Function (GPIO_Write): '<Root>/GPIO_Write3' */
  {
    if (rtDW.NOT1 == 0)
      HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);
    else
      HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET);
  }
} 
 
 
 

 
触发中断调用函数
 


这个线要虚线,如果不是的话要先编译

void EXTI3_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI3_IRQn 0 */
  /* USER CODE END EXTI3_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
  /* USER CODE BEGIN EXTI3_IRQn 1 */
  /* USER CODE END EXTI3_IRQn 1 */
}
void untitled_initialize(void)
{
  /* user code (Start function Body) */
  {
    /* External interrupt function registering. */
    EXTI_Callback[3] = EXTI3_Callback;
  }
}
keil要重新加入文件夹
void EXTI3_Callback()
{
  {
    /* S-Function (GPIO_Exti): '<Root>/GPIO_Exti' */
    /* Output and update for function-call system: '<Root>/Subsystem' */
    /* S-Function (GPIO_Write): '<S1>/GPIO_Write' */
    {
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
    }
    /* S-Function (GPIO_Write): '<S1>/GPIO_Write1' */
    {
      HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_5);
    }
    /* End of Outputs for S-Function (GPIO_Exti): '<Root>/GPIO_Exti' */
  }
} 



















