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' */
}
}