最近困扰很久,CAN2初始化不成功,把断点设置在if那里,必定进入错误状态,但是把断点设在status那里,每次都能进去,能初始化成功,不知道为何?MCU初始化CAN控制器的时候,外面的收发器需要上电吗? /* Check acknowledged */ if (HAL_IS_BIT_SET(hcan->Instance->MSR, CAN_MSR_INAK)) { status = CAN_INITSTATUS_SUCCESS; } 发生问题是在高温80度时,设置了INRQ位,但是等不到INAK的置位应答,导致初始化错误,常温没有问题,高温有问题,不知道哪位大侠见过? /* Request initialisation */ SET_BIT(hcan->Instance->MCR, CAN_MCR_INRQ); /* Get timeout */ tickstart = HAL_GetTick(); /* Wait the acknowledge */ while(HAL_IS_BIT_CLR(hcan->Instance->MSR, CAN_MSR_INAK)) { if((HAL_GetTick()-tickstart) > CAN_TIMEOUT_VALUE) { hcan->State= HAL_CAN_STATE_TIMEOUT; /* Process unlocked */ __HAL_UNLOCK(hcan); return HAL_TIMEOUT; } } |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
您 这 CAN 是用于 那些 场合?
》80度有问题,应该不是 软件的问题,有空 可参考下我们的程序
冗余双CAN现场总线STM32F105开发板KeilC++源程序
https://www.stmcu.org.cn/module/ ... amp;fromuid=3399024
(出处: 意法半导体STM32/STM8技术社区)
评分
查看全部评分
新手
黑体字分明只是说断点位置不同影响运行结果,整体上是可以进入初始化模式的。
红体字描述的是温度高了进不了初始化模式。不过温度80度以上的话,可能有点玄了,
毕竟STM32F105XXT6的保证温度范围是-40到85°C.
评分
查看全部评分
楼主意思是高温初始化超时,按规格书不应该是这种情况,建议参照规格书参数调整超时时间设置(或许时钟频率发生一些变化,处于临界状态)
评分
查看全部评分