久芯网

STM32F103关于CAN的CAN_DeInit函数的疑问。

avatar sdfsdfsdfty 提问时间: 2023-07-15 19:00:43 / 未解决
void CAN_DeInit(CAN_TypeDef* CANx)
{
    /* Enable CAN1 reset state */
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE);
    /* Release CAN1 from reset state */
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, DISABLE);
我开始使用的是静默环回模式,想要切换成其他模式
发现加上 CAN_DeInit后就可以正常切换了
不太懂什么原理,这个开关时钟的意义是什么?为什么这样操作后就能正常切换CAN的模式了呀?

如需获得 STM32F103 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

3个回答
  • avatar butterflyspring
    回答时间: 2023-07-15 19:29:50

    从函数描述上看,这是对CAN外设的一个复位。 复位后就可以进入CAN外设的,初始化模式,才可以正确的配置各种寄存器。 可以参考手册,只有CAN 进入初始化模式才可以配置关键的寄存器。所以这个两个函数使得CAN回到了起始状态了。

  • avatar xmshao
    回答时间: 2023-07-15 19:47:13

    你有所误会。这里不是开关CAN外设的时钟,而是对CAN外设做了强行做了复位。 这个动作在外设功能状态切换时常常会用到,这样让外设先从之前的工作状态回到复位后初始状态状态,然后进行新的配 置,这样做的好处该是不言而喻了吧,我就不啰嗦了。

  • avatar sdfsdfsdfty
    回答时间: 2023-07-15 20:19:49

    懂了,感谢大佬们。

会员中心 微信客服
客服
回到顶部