访问寄存器STM32 CAN通信

时间:2017-09-27 06:50:04

标签: c embedded

你可以帮我弄清楚这行是做什么的:

while (hcan->Instance->MSR & CAN_MSR_INAK) != CAN_MSR_INAK)

1 个答案:

答案 0 :(得分:-1)

这是检查标志或更精确的常用方法 - 如果在某个寄存器中设置了位。在这个特定的例子中:

  

INAK:初始化确认该位由硬件和设置   向软件表明CAN硬件现在在   初始化模式。

所以你基本上在无限循环中等待,直到CAN进入初始化模式。

顺便说一句。我认为你的CAN配置中有很多结构。如果您使用CMSIS宏包,它应如下所示:

while((CAN->MSR & CAN_MSR_INAK) == 0);