• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

F0读内部flash

Key一哥 2018-08-27 浏览量:805
void InternalFlash_Read(uint32_t addruint8_t *puint16_t Byte_Num)
{
        uint8_t i=0;
        while(Byte_Num--)
  {
    p[i]=(*(__IO uint8_t*) addr);
                i++;
    addr++;
  }
}

这个读内部flash在F1上可以,在F0上就会导致程序卡死,请问大佬这是怎么回事
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 卡死时,要进行一下仿真看看是死在了哪里
    大有可能是死在了硬件错误中断中
    你这个函数的调用时,地址与长度要设置正确,参考F0的数据手册中的内存映射进行设置,如果超过了,就会卡死的。
    • 发布于 2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:12
  • addr地址是多少?F0的内部空间和F1不一样,内部flash大小不一样。如果超出了内部flash可能会死机或者其他神奇的现象
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 1
    • 0

  • 读F0的内部Flash时要注意根据所用芯片的数据手册看一下Flash的地址范围,超范围有可能导致程序死,还有就是读取Flash时其他中断也有可能导致程序死,主要注意这两点就没有问题了。
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 不同芯片内部资源有差别,不加修改直接搬过去用的话,可能一些资源是无法访问的,如RAM、Flash空间、IO等,强行操作可能导致程序死锁。
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可能越界了,你看下是不是超出flash范围了
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这有可能是两个片子中的flash型号不同,建议对比一下看看是不是这个问题
    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • F0的FLASH大小一般比F103要小一点,如果是像F031K那种只有十几K FLASH的F0,就容易导致FLASH指针越界访问而卡死。

    • 发布于2018-08-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个读取内部flash的时候要确保那部分flash没有被你正在运行的程序占用,否则会出错
    • 发布于2018-08-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 估计是你程序访问到的flash空间是非法的,有读保护或者flash正在使用。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 读flash的时候要检查你的flash是不是在使用,占用的时候不能使用
    • 发布于2018-09-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 读flash的时候要检查你的flash是不是在使用,占用的时候不能使用
    • 发布于2018-09-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 要排查一下你的flash地址和指针是否正确,是否有访问越界的情况
    • 发布于2018-09-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是你的flash访问越界了,你访问的地址是不存在的

    • 发布于2018-09-22
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

F0读内部flash