这个rcc老是报错是因为A2和A9冲突了吗?怎么改啊?我其他脚都占了
为什么STM32G070KBT6读DIS18B20用PB0就能够读 但是PA8就不能读?都是调用的相同的函数
STM32G0 FLASH快速写入发生HardFault
求助大神们,ADC用DMA方式采集10个通道,该怎么做和配置工程
STM32 G0系列,程序运行在BANK1,擦写BANK2失败
STM32G030内置温度传感器的校准值TS_CAL2的地址是多少?
STM32G030死机问题
如何用STM32芯片读写SD卡?
咨询STM32G030K8T6外部晶振问题
STM32G070CBT6是否支持BOR设置
2、写flash有一套完成的流程,比方开锁、写、关锁,随随便便写会出错是自然的事情。
不知你为何每次要将邮箱号写入flash,实在要写就挑个其它空置的地方不更好吗?
这不是我对地址0x00000002进行操作,是HAL库函数对这个地址的操作。
不是很明白。
但你的问题来看,大概率是你在做CAN应用是,某些变量没有初始化就用了,请就这点好好检查确认。
我用cubeMX配置的系统,使用了HAL库。在使用CAN的时候调用了HAL库的发送函数,HAL库的can发送函数中,自己写了0x00000002的地址。
我的操作是,写0x08000000~0x087FFFFF范围内的FLASH,我操作这部分的FLASH的时候会禁止CAN的功能。
写这个的意思是,HAL库本身的CAN是有Bug的,使用HAL库时候,如果同时使用CAN和操作FLASH时需要注意。
最后,麻烦你看清楚后再说,好歹得知道HAL库是个什么东西吧,那又不是我写的
哦 不好意思~!的确没怎么看明白你描述的,你之前的描述是这样的:
【问题详情】[md]芯片型号为: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功能。
说实在的,如果没有你后来的 两次 补充 我的确很多疑惑和不解,来回讨论了自然才清晰些。后面会就你提及的bug做验证测试。