车票在线制作网站,论坛推广,seo优化推广公司,开发板和单片机的区别1.单片机型号:STM32G070RBTx
2.出现的问题 根据库函数FLASH_If_Write()的使用#xff0c;我们分析往flash写数据的过程是把uint8_t 类型的数据(p_data)以地址的形式强转成uint64类型的#xff0c;在一包128字节的数据时一次存储8位#xff0c;存16次(packet_size/8)#x…1.单片机型号:STM32G070RBTx
2.出现的问题 根据库函数FLASH_If_Write()的使用我们分析往flash写数据的过程是把uint8_t 类型的数据(p_data)以地址的形式强转成uint64类型的在一包128字节的数据时一次存储8位存16次(packet_size/8)下边是原本的逻辑代码,程序卡死在下面框起来的位置:
定义ramsource变量为:uint32_t ;
3. 解决 选择换一种思路把传过来的数据先存到uint64_t类型的数据中然后把数组传过去代码片段如下所示:
4.最后又遇到一个问题
如下图所示判断判断检查栈顶地址是否合法条件不满足详细内容参考下面资料:关于STM32单片机IAP升级中if(((*(__IO uint32_t*)ulAddr_App) 0x2FFE0000) 0x20000000)语句的理解-CSDN博客
原因是在往flash写入数据的过程中存在大小端问题导致存入起始地址的数据和 0x2FFE0000逻辑与判断条件失败在上述把8个字节存储在一个uint64_t位数组中需要注意低位在前还是高位在前问题。