工具/软件:Code Composer Studio
大家好、
我遇到了一个奇怪的问题。
当系统仍在处理初始工作时、系统"有时"跳转到故障 ISR。 我们使用此 MCU 的时间非常长、这是首次发现此问题。
这个问题出现的几率很低、我必须反复重置系统(无需对代码进行任何修改)、以使这个错误发生。
经过一些调试后、我在函数调用之间添加了一组标志。 最后、我发现它的 ROM_Function 调用没有跳回正确的地址并触发总线故障。
下面显示的代码非常简单。 我不知道是什么会导致这种情况发生。
int main (void){ ROM_FPULazyStackingEnable (); ROM_FPUEnable (); ROM_SysCtlClockSet (SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCL_MAIN); ROM_SysCtlPeripheralEnable (SYSCT_GPIOB_GPIOB_GPIOBJUS_GPIOB_GPIOBJUS_OUT_GPIOBJIN );ROM_GPIOBJUST_GPIOBJUST_GPIOPTL (SYSC_GPIOBJ_GPIOPT_GPIOPTL GPIO_PIN_3); ROM_GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_3、GPIO_Strength _8mA、GPIO_PIN_TYPE_STD); ROM_SysCtlPeripheralEnable (SYSCTL_Periph_ADC0); //这两个函数出现问题,不确定哪一个函数。 ROM_ADCReferenceSet (ADC0_BASE、ADC_REF_EXT_3V);//这两个函数出现问题,不确定哪一个函数。 ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH); ROM_GPIOPinTypeADC (SYSCTL_Periph_GPIOH、GPIO_PIN_3); … … … ...}
冷重启更容易发生、因此我认为这可能与某些硬件重启过程有关。
现在、我在开始初始过程之前增加了200ms 的延迟、这个问题就解决了。 (但不确定它是否永远存在、在添加延迟之前、很难重现)
剂量有人对此有什么想法吗?