此程序完成以1ms为间隔L2闪烁的程序,但是将此程序烧写到目标板后,程序不能正常运行。经过调试,最后将问题锁定在启动顺序上,看一下程序外设的启动顺序,具体程序如下:
class CHAL
{
public:
CSystemInit SystemInit;
CSystemClock SystemClock;
CSystemTimer16 SystemTimer16;
CL1 L1;
CL2 L2;
CInfraredEmission InfraredEmission;
};
程序先启动的Timer16,后启动的L2,由于TImer16启动后,立刻发生中断,则会执行Timer16_InterruptFunction中的程序,而此时L2还未初始化,则造成错误发生。
|