设置ExtId时,STM32 HAL CAN不会更新值并崩溃

2019-07-14 17:20发布

我正在使用STM32CubeMX,STM32F103C8T6和Eclipse运行我的第一个CAN测试程序。我在STM32CubeMX中使用了默认的CAN设置(也尝试了环回,但结果相同)。我所看到的(见下图)是我不理解的两件事;
  • 在下图中,您可以看到我超出了hcan.pTxMsg-> StdId = 0x321(左红 {MOD}椭圆)的行,但当前值显示536891392(右红 {MOD}椭圆)。
  • 当我执行下一行(绿 {MOD}):hcan.pTxMsg-> Extid = 0x01时,我最终遇到硬故障中断:/ **
    • @brief此功能处理硬故障中断。 / void HardFault_Handler(void){/ USER CODE BEGIN HardFault_IRQn 0 * // * USER CODE END HardFault_IRQn 0 / while(1){} / USER CODE BEGIN HardFault_IRQn 1 * // * USER CODE END HardFault_IRQn 1 * /}

为什么值没有更新,为什么我得到硬件故障(指针hcan.pTxMsg不是NULL,因为它甚至显示字段StdId(它甚至可以显示值为134222077的ExtId(图中未显示)? 1.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
sfafa
1楼-- · 2019-07-14 18:59
默认情况下,STM32CubeMx为'can'(如果选择)创建初始化代码。此代码可以在MX_CAN_Init中找到,并由main调用。

但是,它不分配/初始化pRxMsg和pTxMsg。

pTxMsg应定义为:

CanTxMsgTypeDef txMessage;
hcan.pTxMsg = &txMessage;
和pRxMsg:

CanRxMsgTypeDef rxMessage;
hcan.pRxMsg = &rxMessage;

一周热门 更多>