本文共 553 字,大约阅读时间需要 1 分钟。
单片机型号:STM32F070F6P6
今天,在程序框架中增加了Timer16定时器驱动,但程序不能正常运行,本篇日志记录其原因。
驱动程序框架,定义了回调函数Timer16_InterruptFunction,写在main.cpp中用于逻辑层设计。Timer16_InterruptFunction调用的间隔为1ms,具体程序如下:
void Timer16_InterruptFunction(void){ Target.HAL.L2.Turn();}
此程序完成以1ms为间隔L2闪烁的程序,但是将此程序烧写到目标板后,程序不能正常运行。经过调试,最后将问题锁定在启动顺序上,看一下程序外设的启动顺序,具体程序如下:
class CHAL{public: CSystemInit SystemInit; CSystemClock SystemClock; CSystemTimer16 SystemTimer16; CL1 L1; CL2 L2; CInfraredEmission InfraredEmission;};
程序先启动的Timer16,后启动的L2,由于TImer16启动后,立刻发生中断,则会执行Timer16_InterruptFunction中的程序,而此时L2还未初始化,
转载地址:http://wkjof.baihongyu.com/