完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片 STM32F103C8T6
同样的板子,用标准函数库,CAN收发都正常。 用hal 库 就会出现收到消息之后可以进中断,表示过滤器工作正常,但是接着程序就会跑到 void HardFault_Handler(void) { /* USER CODE BEGIN HardFault_IRQn 0 */ asm("BX LR");//return to the errror /* USER CODE END HardFault_IRQn 0 */ while (1) { } /* USER CODE BEGIN HardFault_IRQn 1 */ /* USER CODE END HardFault_IRQn 1 */ } 我添加了,asm("BX LR");//return to the errror 跳转回出错点的语句,发现收到消息之后对can 的很多操作都会跳回到HardFault_Handler 。 Hal 库版本 STM32Cube FW_F1 V1.4.0 不知道有谁遇到过HAL库的这些问题 |
|
相关推荐
10个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:) 还没有研究过
|
|
|
|
还没有研究过!!!
|
|
|
|
楼主看一下CAN结构体里面的接收和发送,这个是指针型的,需要初始化CAN时进行赋值。
hcan1.pTxMsg = &TxMessage; hcan1.pRxMsg = &RxMessage; |
|
|
|
TOPCB 发表于 2018-11-20 13:10 还是没解决问题 |
|
|
|
TOPCB 发表于 2018-11-20 13:10 感谢,按照你的提示,可以接收到数据 正常进入回调程序了,不过在回掉程序里面,操作can 的接收和发送,还是容易发生 hard_fault ,这个问题应该还是,指针使用得不当导致的问题,继续折腾中。 |
|
|
|
楼主你把中断处理的部分代码发出来,大家一块看看是哪儿的问题。
|
|
|
|
CanTxMsgTypeDef TxMessage; CanRxMsgTypeDef RxMessage; /* CAN init function */ static void MX_CAN_Init(void) { hcan.Instance = CAN1; hcan.pTxMsg = &TxMessage; hcan.pRxMsg = &RxMessage; hcan.Init.Prescaler = 12; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SJW = CAN_SJW_1TQ; hcan.Init.BS1 = CAN_BS1_3TQ; hcan.Init.BS2 = CAN_BS2_2TQ; hcan.Init.TTCM = DISABLE; hcan.Init.ABOM = DISABLE; hcan.Init.AWUM = ENABLE; hcan.Init.NART = ENABLE; hcan.Init.RFLM = DISABLE; hcan.Init.TXFP = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { Error_Handler(); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
991 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
970 浏览 2 评论
2080 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1177 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 03:20 , Processed in 0.886743 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号