用的芯片型号是STM32F030F4P6,TSSOP20封装,程序很简单,就把系统时钟设置为16M,然后产生一个100ms的systick中断,用一个LED来观察效果。
下面是初始化程序和主程序的截图:
系统初始化,时钟为16M,systick设置为100ms
SysTick_Handler里把flag置1,主函数里判断
在线调试看到的寄存器结果
程序如图那样的话,在线调试就会有时看到寄存器的初始化结果如上图那样,有时又正常。如果是直接下载运行的话,结果必定是不正常的。
另外,如果把SystemInit里的
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.HCLK_Frequency/10);
去掉,而在main里调用的话,结果是不管在线调试,还是直接下载,程序都能正常运行。
此外,如果程序里调用过NVIC_Init(&NVIC_InitStructure); 来开中断,systick也无**常运行了。
请问有没人遇到过这样的怪异问题呢?
|