ST意法半导体
直播中

刘丽

8年用户 1356经验值
私信 关注
[问答]

CAN Receive using Interrupt接收中断挂了怎么解决?

我正在 STM32F103C8T6 上研究 CAN。
我正在使用(HAL_CAN_RxFifo0MsgPendingCallback) 的回调函数,但在收到消息代码后不久,回调函数中挂起,即使之后没有数据发送。
我不明白原因。因为此功能在 CORTEX-M4 处理器上运行良好。
但是,Transmit_Interrupt 工作正常。但是接收中断挂了。

这是代码片段。
代码卡在接收器回调函数 (HAL_CAN_RxFifo0MsgPendingCallback) 中。
/* 中断挂起在接收器 ISR 函数中 */
void HAL_CAN_RxFifo0MsgPendingCallback (CAN_HandleTypeDef *hcan) {
CAN_RxHeaderTypeDef RxHeader;
uint8_t rcvd_msg[5];
字符消息[50];
如果(HAL_CAN_GetRxMessage((CAN_HandleTypeDef*)&hcan,CAN_RX_FIFO0,&RxHeader,rcvd_msg)!= HAL_OK)
{
错误处理程序();
}
sprintf(msg,"收到消息:%s
",rcvd_msg);
HAL_UART_Transmit(&huart1,(uint8_t*)msg,strlen(msg),10);
}
伙计们,请帮忙。










回帖(1)

刘晓寰

2023-2-3 15:10:41
请看我的例子。我在 STM32F103VBT6 上进行了测试。我的示例在 NORMAL 和 LOOPBACK 模式下工作。我还连接了 LCD 进行诊断。HCLK = 72 兆赫,APB1 PCLK1 = 36 兆赫
举报

更多回帖

发帖
×
20
完善资料,
赚取积分