你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
sdfsdfsdfty 提问时间:2022-10-11 18:47 / 未解决
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的模式了呀?
收藏 评论3 发布时间:2022-10-11 18:47

举报

3个回答
butterflyspring 回答时间:2022-10-12 10:22:11
从函数描述上看,这是对CAN外设的一个复位。 复位后就可以进入CAN外设的,初始化模式,才可以正确的配置各种寄存器。 可以参考手册,只有CAN 进入初始化模式才可以配置关键的寄存器。所以这个两个函数使得CAN回到了起始状态了。
xmshao 回答时间:2022-10-12 10:08:40
你有所误会。这里不是开关CAN外设的时钟,而是对CAN外设做了强行做了复位。


这个动作在外设功能状态切换时常常会用到,这样让外设先从之前的工作状态回到复位后初始状态状态,然后进行新的配
置,这样做的好处该是不言而喻了吧,我就不啰嗦了。
sdfsdfsdfty 回答时间:2022-10-12 19:17:27
懂了,感谢大佬们。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版