今天在使用CAN模块时,发现一个有趣的现象,初始化死在FLEXCAN_Reset函数里面等待Software reset的死循环里,如下图
使用的是SDK里面的evkbimxrt1050_flexcan_interrupt_transfer工程,
产生的原因是因为我屏蔽了BOARD_InitDebugConsole();如下图
如果我恢复这行代码,会发现CAN可以正常使用。这样我多做了些测试,我一行行查找,发现是因为
BOARD_InitDebugConsole()函数里调用过CLOCK_EnableClock(kCLOCK_Lpuart1);
代码修改成如下,
CAN也可以初始化正常。改成kCLOCK_Lpuart2好像也可以。
我的理解CAN模块虽然与UART模块都是由PLL3而来,但CLOCK_EnableClock操作的是
CCM模块的CCGRx寄存器,CAN模块与UART模块应该是独立的。
产生这个现象的原因是什么?手册中有没有哪里有提到过这方面的。