当 CPU 重置时,它会执行它的 Reset () 向量。
几行之后,RESET Status 寄存器(32 位)被读取(然后自动清除),并临时存储在另一个未使用的 32 位寄存器中。
* (reg32 *) (CYREG_PHUB_CFGMEM23_CFG1) = * (reg32 *) (CYREG_RESET_SR0);
然后,如果引导加载程序存在,则运行它。(您已表明它存在于您的项目中。)
在 main () 被调用之前的某个时候,会调用 initialize_psoc (void)。 在这个例程中,CyresetStatus 全局变量使用重置时重置状态寄存器的 LSB 进行设置。 注意:此值暂时存储在 CYREG_PHUB_CFGMEM23_CFG1 中,现在已加载到 cyresetStat us 中。
cyresetStatus = CY_GET_REG8 (CYREG_PHUB_CFGMEM23_CFGMEM23_CFG1);
只要引导加载程序不使用 CYREG_PHUB_CFGMEM23_CFG1,cy resetStatus 就应该反映出重置的原因。
这是另一个观察:你注意到了\"但是我一直只能得到 CyresetStatus 的值为 0X80 或 0XA0。\"
设置的位是用户可控制的寄存器的 msb 2 位。 这些是应用程序(或引导加载程序) CAN 设置为在软重置中保留的位。
我建议你检查你的引导加载程序,看看它在放弃控制权之前是否修改了 CYREG_PHUB_CFGMEM23_CFG1 寄存器或 Cy resetStatus 变量。
当 CPU 重置时,它会执行它的 Reset () 向量。
几行之后,RESET Status 寄存器(32 位)被读取(然后自动清除),并临时存储在另一个未使用的 32 位寄存器中。
* (reg32 *) (CYREG_PHUB_CFGMEM23_CFG1) = * (reg32 *) (CYREG_RESET_SR0);
然后,如果引导加载程序存在,则运行它。(您已表明它存在于您的项目中。)
在 main () 被调用之前的某个时候,会调用 initialize_psoc (void)。 在这个例程中,CyresetStatus 全局变量使用重置时重置状态寄存器的 LSB 进行设置。 注意:此值暂时存储在 CYREG_PHUB_CFGMEM23_CFG1 中,现在已加载到 cyresetStat us 中。
cyresetStatus = CY_GET_REG8 (CYREG_PHUB_CFGMEM23_CFGMEM23_CFG1);
只要引导加载程序不使用 CYREG_PHUB_CFGMEM23_CFG1,cy resetStatus 就应该反映出重置的原因。
这是另一个观察:你注意到了\"但是我一直只能得到 CyresetStatus 的值为 0X80 或 0XA0。\"
设置的位是用户可控制的寄存器的 msb 2 位。 这些是应用程序(或引导加载程序) CAN 设置为在软重置中保留的位。
我建议你检查你的引导加载程序,看看它在放弃控制权之前是否修改了 CYREG_PHUB_CFGMEM23_CFG1 寄存器或 Cy resetStatus 变量。
举报