bailao99 发表于 2015-4-14 22:06:24

K22 FlexCAN初始化总进入HardFault_Handler求教

在FRDM-K22F上使用CAN0,初始化代码如下:
OSC_CR |= OSC_CR_ERCLKEN_MASK;

PORT_HAL_SetMuxMode(CAN_Tx_BaseAddr,CAN_Tx_Pin,CAN_Tx_PortMux);
PORT_HAL_SetMuxMode(CAN_Rx_BaseAddr,CAN_Rx_Pin,CAN_Rx_PortMux);
PORT_HAL_SetPullMode(CAN_Tx_BaseAddr,CAN_Tx_Pin,kPortPullUp);
PORT_HAL_SetPullMode(CAN_Rx_BaseAddr,CAN_Rx_Pin,kPortPullUp);
PORT_HAL_SetPullCmd(CAN_Tx_BaseAddr,CAN_Tx_Pin,true);
PORT_HAL_SetPullCmd(CAN_Rx_BaseAddr,CAN_Rx_Pin,true);

SIM_SCGC6 |= 0x10u;

NVIC_EnableIRQ(CAN0_ORed_Message_buffer_IRQn);

CAN0_CTRL1 |= CAN_CTRL1_CLKSRC_MASK;

......
只要执行到CAN0_CTRL1 |= CAN_CTRL1_CLKSRC_MASK; 必然进HardFault_Handler
执行CAN0_CTRL1 &= ~CAN_CTRL1_CLKSRC_MASK;结果也是一样

jiang887786 发表于 2015-4-14 22:45:10

时钟问题吧?有进展吗?can这个东西对时钟分频很麻烦的。你用的是晶振时钟源还是内部总线时钟。

bailao99 发表于 2015-4-15 05:59:19

jiang887786 发表于 2015-4-14 22:45
时钟问题吧?有进展吗?can这个东西对时钟分频很麻烦的。你用的是晶振时钟源还是内部总线时钟。 ...

不像,在FlexCAN初始化就出了问题,就是设置时钟源的那条指令出问题

FSL_TICS_Robin 发表于 2015-4-15 08:46:09

楼主你好
从FRDM-K22F: 面向Kinetis K22 MCU的飞思卡尔Freedom开发平台页面看FRDM-K22F开发板上的主芯片是:MK22FN512VLH12
其对应的参考手册应该是:K22P121M120SF7RM

从其对应参考手册上没有看到此款芯片有CAN模块。

bailao99 发表于 2015-4-15 09:01:31

FSL_TICS_Robin 发表于 2015-4-15 08:46
楼主你好
从FRDM-K22F: 面向Kinetis K22 MCU的飞思卡尔Freedom开发平台页面看FRDM-K22F开发板上的主芯片是 ...

我一直用K22P64M120SF5V2RM.pdf,原来错了
能否推荐一个带示波器功能且能保存数据的串口显示软件?

FSL_TICS_Robin 发表于 2015-4-15 09:08:37

bailao99 发表于 2015-4-15 09:01
我一直用K22P64M120SF5V2RM.pdf,原来错了
能否推荐一个带示波器功能且能保存数据的串口显示软件? ...

每个参考手册开头都有列出适用的芯片,以后使用芯片时要多加注意选择自己芯片在列的文档。
虽然同系列芯片功能大致相同,但众多型号之间还是稍有区别靠参考手册才能区分具体不同。

子鱼 发表于 2015-4-15 09:26:23

原来是参考的手册错了{:lol:}

FSL_TICS_Robin 发表于 2015-4-15 10:10:35

子鱼 发表于 2015-4-15 09:26
原来是参考的手册错了

是楼主看了其他型号芯片的参考手册...
楼主这型号芯片没这个CAN模块,却在程序里使用相关寄存器出错也是正常的。

FSL_TICS_Robin 发表于 2015-5-13 16:11:52

非常感谢你关于Kinetis的技术问题。如果你没有其他问题,我们将此帖默认为已解决.
页: [1]
查看完整版本: K22 FlexCAN初始化总进入HardFault_Handler求教