你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

1

[复制链接]
叮铛 提问时间:2024-7-25 10:32 / 已解决

图片.png
图片.png
图片.png
图片.png
收藏 评论5 发布时间:2024-7-25 10:32

举报

5个回答
xmshao 回答时间:2024-7-25 11:17:25
1、你为什么要对地址02进行写操作?它是中断矢量表的入口位置,存放的特定数据。


2、写flash有一套完成的流程,比方开锁、写、关锁,随随便便写会出错是自然的事情。


不知你为何每次要将邮箱号写入flash,实在要写就挑个其它空置的地方不更好吗?
叮铛 回答时间:2024-7-25 11:36:29

xmshao 发表于 2024-7-25 11:17
1、你为什么要对地址02进行写操作?它是中断矢量表的入口位置,存放的特定数据。</p>
<p>

这不是我对地址0x00000002进行操作,是HAL库函数对这个地址的操作。

xmshao 回答时间:2024-7-25 12:12:51
你是说没有对02地址做写操作,但你后来又说 操作FLASH时,禁用CAN功能;操作FLASH结束,开启CAN功能。


不是很明白。


但你的问题来看,大概率是你在做CAN应用是,某些变量没有初始化就用了,请就这点好好检查确认。
叮铛 回答时间:2024-7-25 13:07:53

xmshao 发表于 2024-7-25 12:12
你是说没有对02地址做写操作,但你后来又说 操作FLASH时,禁用CAN功能;操作FLASH结束,开启CAN功能。</p>
<p>

我用cubeMX配置的系统,使用了HAL库。在使用CAN的时候调用了HAL库的发送函数,HAL库的can发送函数中,自己写了0x00000002的地址。

我的操作是,写0x08000000~0x087FFFFF范围内的FLASH,我操作这部分的FLASH的时候会禁止CAN的功能。

写这个的意思是,HAL库本身的CAN是有Bug的,使用HAL库时候,如果同时使用CAN和操作FLASH时需要注意。

最后,麻烦你看清楚后再说,好歹得知道HAL库是个什么东西吧,那又不是我写的

xmshao 回答时间:2024-7-25 13:42:37

叮铛 发表于 2024-7-25 13:07
我用cubeMX配置的系统,使用了HAL库。在使用CAN的时候调用了HAL库的发送函数,HAL库的can发送函数中 ...

哦 不好意思~!的确没怎么看明白你描述的,你之前的描述是这样的:


【问题详情】[md]芯片型号为:STM32F407VET6。使用CubeMX配置并生成HAL库。

在工程中,配置了CAN1和CAN2。并且调用了函数HAL_CAN_AddTxMessage(&hcan2, &xCAN2.TxHead, xCAN2.TxdBuf, (uint32_t *)CAN_TX_MAILBOX1);该函数的第4个形参是邮箱号,值为2.图片.png

HAL_CAN_AddTxMessage函数中,将邮箱号重映射为一个地址,然后对这个地址(0x00000002)进行数据写入。

图片.png

系统硬件设计的自举模式为主FLASH,如下图所示。

图片.png

每次调用HAL_CAN_AddTxMessage发送函数,都会向0x00000002U的地址中写入一个值,导致FLASH报错,具体错误如下图所示

图片.png

发生FLASH故障后,会导致FLASH操作失败。

解决方法:操作FLASH时,禁用CAN功能;操作FLASH结束,开启CAN功能。


说实在的,如果没有你后来的 两次 补充 我的确很多疑惑和不解,来回讨论了自然才清晰些。后面会就你提及的bug做验证测试。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版