主题中讨论的其他器件:HALCOGEN
被生成 的 esmInit() fn 似乎尝试将所有 ESM 组1中断通道(0-63)映射到低级中断线路,但它通过向 ESMILSR1和 ESMILSR1寄存器中的所有位写入0来实现此目的; 由于 TRM 指定将0写入特定的位,“将该位和相应的清零位留在... 寄存器不变"、这些写入无效。 如果我对这个初始化的目标是正确的、那么代码应该将"清除"寄存 器 ESMILCR1和 ESMILCR4中的相应位设定为1。
Marcus
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.
被生成 的 esmInit() fn 似乎尝试将所有 ESM 组1中断通道(0-63)映射到低级中断线路,但它通过向 ESMILSR1和 ESMILSR1寄存器中的所有位写入0来实现此目的; 由于 TRM 指定将0写入特定的位,“将该位和相应的清零位留在... 寄存器不变"、这些写入无效。 如果我对这个初始化的目标是正确的、那么代码应该将"清除"寄存 器 ESMILCR1和 ESMILCR4中的相应位设定为1。
Marcus
您好、Marcus、
通过以下方式将所有 ESM 组1通道的 INT 优先级清零(esmREG->ILSRx 也被清零至0x0)为低电平中断:
esmREG->ILCR1 = 0xFFFFFFU;
esmREG->ILCR4 = 0xFFFFFFU;
esmREG->ILSR1 = 0x...; 和 esmREG->ILSR4=0x... 将通过向相应位写入1将 INT 优先级模式更改为高电平、或通过写入0将其保持不变。
如果将 ESM1.1通道的 INT 级别更改为高,则 esmREG->ILSR1[1]将设置为1:


大家好、我知道我、无论谁是谁、我认为您的回复确认了我在原始帖子中所说的所有内容、但明确承认 编码无效。 在进一步思考之后,我开始想知道 esmInit() fn 中无效的0值写入的意图是否是作为用户的模板,但这只有在以下寄存器有定义的默认值(nPORRST 置位之后)时才有意义:
ESMILSR1/ESMILCR1 读取其中任何一个都表示相同
ESMILSR4/ESMILCR4. 读取其中任何一个都表示相同
ESMEEPAPR1/ESMDEPAPR1 -读取其中任何一个都表示相同
ESMIEPSR4/ESMIEPCR4 读取其中任何一个都表示相同
ESMIESR1/ESMIECR1 读取其中任何一个都表示相同
ESMIESR4/ESMIECR4 读取其中任何一个都表示相同
我假设默认值(已读)是所有位都设置为零;请确认。
Marcus
您好、Marcus、
以下指令用于将这些寄存器清零为其默认值:
esmREG->ILCR1 = 0xFFFFFFU;
esmREG->ILCR4 = 0xFFFFFFU;
esmREG->ILCR7 = 0xFFFFFFU;
esmREG->IECR1 = 0xFFFFFFU;
esmREG->IECR4 = 0xFFFFFFU;
esmREG->IECR7 = 0xFFFFFFU;
esmREG->IEPCR4 = 0xFFFFFFU;
esmREG->IEPCR7 = 0xFFFFFFU;
以下指令用于从 HalCOGen GUI 的 ESM 面板中为所选通道启用中断、nERROR 操作和 FIQ 等。 对于未选择的通道、这些寄存器中的相应位不变:
esmREG->ILSR1=...
esmREG->ILSR4=...
esmREG->ILSR7=...
esmREG->EEPAPR1=...
esmREG->IEPSR4=...
esmREG->IEPSR7=...
esmREG->IESR1=...
esmREG->IESR4=...
esmREG->IESR7=...
你是对的。 复位后、这些寄存器的默认值为0x0。