【发布时间】:2018-08-28 19:18:43
【问题描述】:
我最近在 Simulink 中遇到了这个奇怪的错误,我找不到任何相关信息。
Matlab 版本:2018a 操作系统:Windows 10
gpio_in.c 是使用 s-function 构建器生成的 s-function 的代码。我自己的代码位于相关的包装文件 gpio_in_wrapper.c 中。 s-function builder 设置为只保存代码而不是构建它。我在以后通过 Simulink 编码器部署时使用此文件进行硬件交互。
每当我尝试启动仿真时,Simulink 都会向我显示上述错误,我不知道问题可能是什么。在我看来 D: 是文件路径的开头,特别是如果您考虑上面的警告 \D 并且可能是模型目录的开头 D:\Dateien\Git_Repositories\BMaS_Neu\Simulink。
UnbearableLightness 建议的 gpio_in_wrapper.c 内容
/*
* Include Files
*
*/
#if defined(MATLAB_MEX_FILE)
#include "tmwtypes.h"
#include "simstruc_types.h"
#else
#include "rtwtypes.h"
#endif
/* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN --- EDIT HERE TO _END */
#include <gpio.h>
/* %%%-SFUNWIZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */
#define u_width 1
#define y_width 1
/*
* Create external references here.
*
*/
/* %%%-SFUNWIZ_wrapper_externs_Changes_BEGIN --- EDIT HERE TO _END */
/* %%%-SFUNWIZ_wrapper_externs_Changes_END --- EDIT HERE TO _BEGIN */
/*
* Output function
*
*/
void gpio_in_Outputs_wrapper(const int32_T *port_popupvalue,
const int32_T *pin_number,
boolean_T *gpio_in)
{
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_BEGIN --- EDIT HERE TO _END */
if (*port_popupvalue == 1) {
*gpio_in = HAL_GPIO_ReadPin(GPIOA, (1 << *pin_number));
} else if (*port_popupvalue == 2) {
*gpio_in = HAL_GPIO_ReadPin(GPIOB, (1 << *pin_number));
} else if (*port_popupvalue == 3) {
*gpio_in = HAL_GPIO_ReadPin(GPIOC, (1 << *pin_number));
} else if (*port_popupvalue == 4) {
*gpio_in = HAL_GPIO_ReadPin(GPIOD, (1 << *pin_number));
} else if (*port_popupvalue == 5) {
*gpio_in = HAL_GPIO_ReadPin(GPIOE, (1 << *pin_number));
} else if (*port_popupvalue == 6) {
*gpio_in = HAL_GPIO_ReadPin(GPIOF, (1 << *pin_number));
} else if (*port_popupvalue == 7) {
*gpio_in = HAL_GPIO_ReadPin(GPIOG, (1 << *pin_number));
} else if (*port_popupvalue == 8) {
*gpio_in = HAL_GPIO_ReadPin(GPIOH, (1 << *pin_number));
} else if (*port_popupvalue == 9) {
*gpio_in = HAL_GPIO_ReadPin(GPIOI, (1 << *pin_number));
}
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_END --- EDIT HERE TO _BEGIN */
}
我会很感激你的每一个暗示。
【问题讨论】:
-
分享您的代码。错误告诉您
\D对您的代码可能正在使用的函数 sprintf 无效。 -
如果您无法共享您的代码,请执行
dbstop in sprintf并尝试找到对sprintf的调用,该调用在格式说明符中传递了带有\D的内容。如果在 MathWorks 代码中,请通过MathWorks technical support 报告 -
@UnbearableLightness 哪些文件对您有帮助?各自的c源文件?这是一个学生项目,所以我可以分享你想要的任何东西。
-
@Simon 感兴趣的源文件是
gpio_in_wrapper.c -
@UnbearableLightness 已将其添加到问题中。