This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SK-AM62A-LP:使用 Microsar 堆栈运行 GPIO 问题

Guru**** 2387830 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1498203/sk-am62a-lp-running-gpio-issue-with-microsar-stack

器件型号:SK-AM62A-LP

工具/软件:

您好:

我正在从矢量处理 microsar autosar 栈、并创建了一个初始项目来运行 GPIO。 我使用了其中一个 LED 闪烁示例作为 GPIO 初始化的参考。 代码片段如下所示:

最初从 ti_drivers_config.c 中调用 System_init ()

void System_init (void)

/* DPL init 设置地址传输单元、在某些 CPU 上需要这样做
*访问 SCICLIENT 服务,因此这需要首先发生
*/
dpl_init();
/*我们应该在启用外设的电源和时钟之前执行 sciclient init */
/* SCICLIENT INIT */

int32_t = SystemP_Success;

retVal = Sciclient_init (CSL_CORE_ID_MCU_R5FSS0_0);
DebugP_assertNoLog (SystemP_Success == RetVal);

}
PowerClock_init();
/*现在我们可以执行 pinmux */
Pinmux_init ();
/*最后我们初始化所有外设驱动程序*/
drivers_uartInit();

gpio_init ();

}

void gpio_init ()

uint32_t baseAddr;

/*实例0 */
/*翻译后获取地址*/
baseAddr =(uint32_t) AddrTranslateP_getLocalAddr (GPIO_LED_BASE_ADDR);
GPIO_pinWriteLow (baseAddr、GPIO_LED_PIN);

GPIO_setDirMode (baseAddr、GPIO_LED_PIN、GPIO_LED_DIR);
}

在此之后、为了打开 LED、我执行以下操作-

gpioBaseAddr =(uint32) AddrTranslateP_getLocalAddr (GPIO_LED_BASE_ADDR);

pinNum = GPIO_LED_PIN;

GPIO_setDirMode (gpioBaseAddr、pinNum、0);
GPIO_pinWriteHigh (gpioBaseAddr、pinNum);

这并不总是有效的、但令人惊讶的是、有时它是编译器/优化/链接器问题、还是我缺少某些编译器标志/项目设置?  

在调试时、我看到 gpio.h 文件和变量窗口如下所示、即"the variable is not available"、这在 led 示例中是看不到的。 也可以单步执行、但断点不起作用-  

   

这是因为缺少编译器/链接器设置吗? 或任何其他一般设置、因为 GPIO 模块等某些模块位于 MCU+SDK 中  

谢谢、此致、

Nikhil