起因和现象
我收到一个i.mx rt1060的EVK评估板,在使用的时候,我就已经遇到一个问题了,就是在初始化的时候,systick不能被正常初始化,在systick初始化运行一定时间之后,程序就会崩溃卡死。我一直无法理解为什么,配置我是参照例程配置的,讲道理是没问题的。后来我的解决办法是,直接操作systick的寄存器进行配置,不用core_cm7.h的函数,最后正常使用。
而这次是出现在i.mx rt 1052的开发板上,我依然用同样的方式去操作寄存器,但发现并不行,最后我纳闷了,参照野火的程序,发现居然可以通过??那例程和野火的程序,差别在哪?我对比了一下,
左边是参考野火的,右边是例程。例程的延时,用的是递减的方式延时,并没有用systick。这两个程序的最大差别在于,有无PAD设置,以及GPIO的复用配置。我发现,在使用i.mx rt系列的时候,gpio的配置如果没有加入pad的设置和mux(复用)的配置,很容易直接进入Handfault,并且是那种运行一阵之后才进去的。
同样在配置IO中断的时候,如果没有PAD的配置,依然会进入Handfault,真让人着迷啊。。。