主题中讨论的其他器件:C2000WARE
您好!
我相信我在 driverlib memcfg 文件 MemCfg_getInitStatus()函数中发现了错误。
假设我正在初始化所有 RAM 段、我调用 MemCfg_initSections 并传递 0xFFFFFFU、在函数内的切换情况下、在写入初始化寄存 器之前、函数首先使用 MEMCFG_Sect_NUM_MASK 清除 MSB。
案例 MEMCFG_sect_type_mask:
//
//初始化所有段。
//
HWREG (MEMCFG_BASE + MEMCFG_O_DXINIT)|= MEMCFG_"Sect_NUM_MASK &
MEMCFG_sect_DX_ALL;
HWREG (MEMCFG_BASE + MEMCFG_O_LSXINIT)|= MEMCFG_Sect_NUM_MASK &
MEMCFG_Sect_LSX_ALL;
HWREG (MEMCFG_BASE + MEMCFG_O_GSXINIT)|= MEMCFG_Sect_NUM_MASK &
MEMCFG_sect_GSH_ALL;
HWREG (MEMCFG_BASE + MEMCFG_O_MSGXINIT)|= MEMCFG_Sect_NUM_MASK &
MEMCFG_Sect_MSGX_ALL;
但是,使用 MemCfg_getInitStatus()函数检查状态时,比较是直接在没有掩码的情况下完成的
案例 MEMCFG_sect_type_mask:
//
//返回总体状态。
//
if ((HWREG (MEMCFG_base + MEMCFG_O_DXINITDONE)==
MEMCFG_sect_DX_ALL)&&
(HWREG (MEMCFG_BASE + MEMCFG_O_LSXINITDONE)==
MEMCFG_Sect_LSX_ALL)&&
(HWREG (MEMCFG_BASE + MEMCFG_O_GSXINITDONE)==
MEMCFG_sect_GSH_ALL)&&
(HWREG (MEMCFG_BASE + MEMCFG_O_MSGXINITDONE)=
MEMCFG_Sect_MSGX_ALL))
{
状态= MEMCFG_sect_NUM_MASK;
}
其他
{
状态= 0U;
}
我认为在这里、我们还需要屏蔽 MSB 以便进行比较、如果不是这样、这将始终转到其他陈述。
请您对此进行澄清吗?
此致、
Harsha