我在第一段程序中使能了GPIOF,使F1输出高驱动一个led亮,跳转到第二段程序时正常运行时,发现F1驱动的led灯仍为亮,但是如果在跳转前F1输出低关闭这个led灯,跳转后就不会亮,所以我想知道在跳转到第二段程序后,从开始执行ResetISR()这个函数到我的main函数这个期间,到底发生了什么, _c_int00()这个函数具体实现是在哪里定义的,他内部是执行了哪些操作,有没有对所有外设复位;如果系统没有自动复位外设的话,我应该如何解决这个问题,是不是要在第二段程序开始就调用SysCtlPeripheralReset(uint32_t ui32Peripheral)和SysCtlPeripheralDisable(uint32_t ui32Peripheral)将所有外设复位并禁能?
#pragma DATA_SECTION(g_pfnVectors, ".intvecs")
void (* const g_pfnVectors[])(void) =
{
(void (*)(void))((uint32_t)&__STACK_TOP),
// The initial stack pointer
ResetISR, // The reset handler
NmiSR, // The NMI handler
FaultISR, // The hard fault handler
......................
}
//*****************************************************************************
//
// This is the code that gets called when the processor first starts execution
// following a reset event. Only the absolutely necessary set is performed,
// after which the application supplied entry() routine is called. Any fancy
// actions (such as making decisions based on the reset cause register, and
// resetting the bits in that register) are left solely in the hands of the
// application.
//
//*****************************************************************************
void ResetISR(void)
{
//
// Jump to the CCS C initialization routine. This will enable the
// floating-point unit as well, so that does not need to be done here.
//
__asm(" .global _c_int00\n"
" b.w _c_int00");
}
//*****************************************************************************
//
// External declaration for the reset handler that is to be called when the
// processor is started
//
//*****************************************************************************
extern void _c_int00(void);