完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[td] 芯片型号为:STM32F407VET6。使用CubeMX配置并生成HAL库。
在工程中,配置了CAN1和CAN2。并且调用了函数HAL_CAN_AddTxMessage( hcan2, xCAN2.TxHead, xCAN2.TxdBuf, (uint32_t *)CAN_TX_MAILBOX1);该函数的第4个形参是邮箱号,值为2. 在HAL_CAN_AddTxMessage函数中,将邮箱号重映射为一个地址,然后对这个地址(0x00000002)进行数据写入。 系统硬件设计的自举模式为主FLASH,如下图所示。 每次调用HAL_CAN_AddTxMessage发送函数,都会向0x00000002U的地址中写入一个值,导致FLASH报错,具体错误如下图所示 发生FLASH故障后,会导致FLASH操作失败。 解决方法:操作FLASH时,禁用CAN功能;操作FLASH结束,开启CAN功能。 |
|
相关推荐
1个回答
|
|
在STM32F4 HAL库下,CAN发送导致FLASH报错的问题可能是由于以下几个原因导致的。请按照以下步骤进行排查和解决:
1. 检查CAN配置: 确保CAN控制器的配置正确,包括波特率、工作模式、过滤器等。错误的配置可能导致CAN通信异常,从而引发FLASH报错。 2. 检查FLASH写入保护: 在进行CAN发送操作时,确保FLASH没有被写入保护。如果FLASH被写入保护,尝试写入数据时会触发保护机制,导致报错。可以通过以下代码解除写入保护: ```c HAL_FLASH_Unlock(); __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); __HAL_FLASH_DATA_CACHE_DISABLE(); FLASH_OB_Unlock(); OB->WRP1 = 0x00; // 清除写保护区域 FLASH_OB_Lock(); __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); __HAL_FLASH_DATA_CACHE_ENABLE(); HAL_FLASH_Lock(); ``` 3. 检查中断优先级: 确保CAN发送操作的中断优先级设置正确。如果中断优先级设置不当,可能导致中断嵌套,从而引发FLASH报错。可以通过以下代码设置中断优先级: ```c HAL_NVIC_SetPriority(CANx_IRQn, 0, 0); HAL_NVIC_EnableIRQ(CANx_IRQn); ``` 4. 检查CAN发送缓冲区: 确保CAN发送缓冲区没有被占用或者溢出。如果缓冲区被占用或者溢出,可能导致CAN发送失败,从而引发FLASH报错。可以通过以下代码检查CAN发送缓冲区: ```c uint32_t TxMailbox; HAL_CAN_GetTxMailboxesFreeLevel(&hcan, &TxMailbox); if (TxMailbox == 0) { // 缓冲区已满,等待缓冲区空闲 while (TxMailbox == 0) { HAL_CAN_GetTxMailboxesFreeLevel(&hcan, &TxMailbox); } } ``` 5. 检查CAN发送回调函数: 确保CAN发送回调函数没有触发FLASH写入操作。如果在回调函数中进行FLASH写入,可能导致FLASH报错。可以尝试将回调函数中的FLASH写入操作移至其他位置。 6. 检查代码优化: 确保代码中没有使用到优化指令,如跳转、循环展开等。这些优化指令可能导致FLASH报错。可以尝试关闭编译器优化,或者手动优化代码。 7. 检查硬件连接: 确保CAN控制器与外部CAN网络的硬件连接正确,包括CAN收发器、终端电阻等。错误的硬件连接可能导致CAN通信异常,从而引发FLASH报错。 通过以上步骤进行排查和解决,应该可以解决STM32F4 HAL库下CAN发送导致FLASH报错的问题。如果问题仍然存在,建议联系硬件供应商或者寻求专业人士的帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1712 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1600 浏览 1 评论
1038 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
715 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1651 浏览 2 评论
1903浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
694浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
546浏览 3评论
567浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
535浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 04:59 , Processed in 0.722892 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号