使用stm32f103c8t6单片机做回环实验,在初始化can_init 的时候失败,程序一直卡在如下位置
while (((CANx->MSR & CAN_MSR_INAK) != CAN_MSR_INAK) && (wait_ack != INAK_TIMEOUT))
{
wait_ack++;
}
查看了stm32手册,是如下解释的: _INRQ: 初始化请求 (Initialization request)
软件对该位清’0’可使CAN从初始化模式进入正常工作模式:当CAN在接收引脚检测到连续的11
个隐性位后,CAN就达到同步,并为接收和发送数据作好准备了。为此,硬件相应地对
CAN_MSR寄存器的INAK位清’0’。
软件对该位置1可使CAN从正常工作模式进入初始化模式:一旦当前的CAN活动(发送或接收)结
束,CAN就进入初始化模式。相应地,硬件对CAN_MSR寄存器的INAK位置’1’ 现在是 硬件对CAN_MSR寄网上差了好多资料,有的说是波特率有的说是引脚复用。存器的INAK位怎么也不会 置’1’ 电路连接如下:
网上差了好多资料,有的说是波特率有的说是引脚复用。
|