工具/软件:
您好!
通过 在主循环中调用 can_receive_routin() 和 can_send_routin()、我已成功发送和接收 CAN。 can_send_routin() 只包含一组 can_sendMessage () 消息调用。
我不使用 DMA、也不使用中断。 我有两个问题:
问题 1: 由于某种原因 ,当我尝试将 can_send_routin() 移动到 1ms 任务时(我也在将它用于另一个进程),我在执行时会收到断言错误。
我在映射文件中查找到错误、看起来像 can.obj、我假设这意味着 can.c 文件? 行号为 487、即:
assert ((msgCtrl & CAN_IF1MCTL_DLC_M)== msgLen);
这很奇怪、因为我以前从未遇到过 DLC 问题。 我尝试注释掉该断言行、但出于某种原因、我仍然收到具有相同行号的断言错误。 有什么想法在这里可以发生什么?
问题 2: can_sendMessage (uint32_t base、uint32_t Objid、uint16_t msgLen、 const uint16_t *msgData) 是否 在发送时阻止 CPU? 我注意到、只要在每 1ms 执行过程中添加其中 1 个函数调用、我的 1ms 任务就会大幅减慢。 我曾假设他们不会因为邮箱功能而需要任何处理。 我是否需要启用 DMA 或其他任何功能?
提前感谢!
Steven