Other Parts Discussed in Thread: DRA829J
器件型号: DRA829J
大家好、我正在尝试设置 R5 内核 MCU2_0 RTI WWD、但这些设置似乎没有任何效果。 无论配置如何、我永远不会获得复位或中断。 以下是我使用的代码、基于 PDK 的 RTI_APP_dwwd_v1.c 示例:
static void initWatchdog(void)
{
rtiInterruptConfig();
/* Set RTI clock source */
HW_WR_FIELD32(CSL_CTRL_MMR0_CFG0_BASE + CSL_MAIN_CTRL_MMR_CFG0_WWD28_CLKSEL,
CSL_MAIN_CTRL_MMR_CFG0_WWD28_CLKSEL_CLK_SEL,
0x3u);
uint32_t status;
RTIDwwdGetStatus(CSL_RTI28_CFG_BASE, &status);
RTIDwwdClearStatus(CSL_RTI28_CFG_BASE, status);
int32_t result = RTIDwwdWindowConfig(CSL_RTI28_CFG_BASE,
RTI_RTIDWWDRXNCTRL_DWWDRXN_INTERRUPT,
10000u * 32u,
RTI_RTIDWWDSIZECTRL_DWWDSIZE_100_PERCENT);
ASSERT(CSL_PASS == result);
result = RTIDwwdCounterEnable(CSL_RTI28_CFG_BASE);
ASSERT(CSL_PASS == result);
}
static void rtiInterruptConfig(void)
{
OsalRegisterIntrParams_t intParams;
Osal_RegisterInterrupt_initParams(&intParams);
intParams.corepacConfig.arg = (uintptr_t)NULL;
intParams.corepacConfig.priority = 1u;
intParams.corepacConfig.corepacEventNum = 0u; /**< Not used */
intParams.corepacConfig.isrRoutine = &rtiWwdIsr;
intParams.corepacConfig.intVecNum = CSLR_R5FSS0_CORE0_INTR_RTI28_INTR_WWD_0;
HwiP_Handle hHwiHandle;
OsalInterruptRetCode_e osalRetVal = Osal_RegisterInterrupt(&intParams, &hHwiHandle);
seASSERT(OSAL_INT_SUCCESS == osalRetVal);
}
我在 配置 RTI 之前调用 Board_unlockMMR()。
我还尝试将 wwdt 响应设置为 RTI_RTIDWWDRXNCTRL_DWWDRXN_RESET、但也没有更改。
RTI WWD 设置中是否缺少某些内容?