STM32调试特定函数出现Cannot access Memory

这篇具有很好参考价值的文章主要介绍了STM32调试特定函数出现Cannot access Memory。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 问题

程序每次执行到了特定函数的位置时,keil里面全速运行,一直出现Cannot access Memory
再后面就是进入硬件错误中断了 ;
 执行到这个函数之前是正常的,说明这个函数出现了下面四种情况;

2 原因

访问了未初始化的指针。指针是一种特殊的变量类型,它存储内存地址。
如果指针没有初始化为有效的内存地址,则访问该指针所引用的内存会导致“CANNOT ACCESS MEMORY”错误。
确保在使用指针之前将其初始化为有效的内存地址。
访问越界的数组元素。如果程序尝试访问数组的越界元素,将导致“CANNOT ACCESS MEMORY”错误。
确保在访问数组元素之前检查数组索引是否在有效范围内。
内存泄漏。如果程序分配了内存但未释放,将导致内存泄漏。内存泄漏会导致程序使用越来越多的内存,
最终可能导致“CANNOT ACCESS MEMORY”错误。在使用完内存后,务必释放内存以避免此问题。
访问已释放的内存。如果程序释放了一块内存,但后续仍然尝试访问该内存,则可能导致
“CANNOT ACCESS MEMORY”错误。确保在释放内存后不再访问该内存
int buf[10]; 
cnt  = 5;
///...其他地方发生改变 无意中cnt变成15了
buf[cnt]= 0xFF; //这里就会导致异常  


char* str = &rx_buf;
char temp_buf[10];

//num是调用函数的返回值 
strncpy(temp_buf, str, num);
str += (num + 1);
///....
//结果str再多次递增中越界了  

3 总结

超出数组索引 指针访问越界 对空指针进行操作
都容易出现这个问题

如果是函数没有跑, 就出现Cannot access Memory
搜索到的结果大多是这种回复 可以参考一下文章来源地址https://www.toymoban.com/news/detail-571357.html

第一种情况是你的flash已经被写保护了,导致不能操作,
第二种就是boot引脚设置不对,导致不能识别到flash空间的地址

到了这里,关于STM32调试特定函数出现Cannot access Memory的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】CAN过滤器配置----接收特定ID发来的数据

    滤波器详细配置 (slave_id为只接收的id号): 1、对扩展数据帧进行过滤:(只接收扩展数据帧) 2、对扩展远程帧过滤:(只接收扩展远程帧) 3、对标准远程帧过滤:(只接收标准远程帧) 4、对标准数据帧过滤:(只接收标准数据帧) 5、对扩展帧进行过滤:(只接收扩展帧) 6、对标准帧进行

    2024年02月12日
    浏览(28)
  • STM32CubeIDE开发(四), stm32调试信息串口通信输出显示

    目录 一、stm32串口配置 三、串口驱动功能调用及编译实现 四、编译测试         关于cubeIDE开发基本技巧及流程,本文不详细叙述,请参考:cubeIDE快速开发流程_py_free的博客-CSDN博客_cubeide汉化 一、stm32串口配置         本文采用的开发板是stm32L496VGT3,其有两个 USB 接口,

    2023年04月08日
    浏览(28)
  • STM32“死机“(实用调试技巧)

    2、硬件环境导致\\\"死机\\\" 1)供电电源电压不在合适范围      单片机都需要有一个能够稳定运行的电压工作范围,如果低于或者高于正常工作电压范围其单片机并不一定会立马无法工作(也有可能会立马死机),而是工作一段时间在某种环境条件满足的时候造成死机。     处理

    2024年02月01日
    浏览(32)
  • 【STM32调试】寄存器调试不良问题记录持续版

    记录一些stm32调试过程中:不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以及外设等寄存器的调试,不包含业务方面。 使用低功耗功能前是否需要打开PWR时钟? 是需要先打开PWR时钟的,否则无法唤醒。 睡眠模式、停机模

    2024年01月18日
    浏览(40)
  • STM32的CAN总线调试经验分享

    CAN总线简易入门教程 CAN总线显性电平和隐性电平详解 STM32的CAN总线调试经验分享 最近负责的一个项目用的主控芯片是 STM32F407IGT6 ,需要和几个电机控制器进行通讯,有很多参数需要进行监控。负责固件开发的同事一直搞不定一个问题。就是开启 CAN 的接收中断,接收不到数据

    2024年01月20日
    浏览(28)
  • STM32无线透传、PID调试工具

    一、无线透传概述与应用 无线模块 (RF wireless module) ,是数字数传电台 (Digital radio)的模块化产品,是指借助DSP 技术和无线电技术实现的高性能专业数据传输电台模块。 无线模块延伸到很多的系统中,工业控制的开关量io设备,485无线传输设备dw-m1,模拟量采集和控制设备。从

    2024年04月11日
    浏览(29)
  • 野火霸天虎 STM32F407 学习笔记_1 stm32介绍;调试方法介绍

    博主开始探索嵌入式以来,其实很早就开始玩 stm32 了。但是学了一段时间之后总是感觉还是很没有头绪,不知道在学什么。前前后后分别尝试了江协科技、正点原子、野火霸天虎三次 stm32 的课程学习。江协科技的 stm32f103c8t6 课程看了一段时间,感觉对一些外设的调用方法有

    2024年02月06日
    浏览(29)
  • STM32使用Jlink下载时报错:cannot read Jlink version number

    最近在学习32遇到的一个问题,浅浅的记录一下。 在魔术棒中进行下载代码的设置时,发现选择Jlink之后,没有识别出来,提示 cannot read Jlink version number。   这个问题只要是因为电脑没有安装Jlink的驱动,所以安装一下Jlink的驱动就可以解决了,Jlink驱动可以去Jlink驱动下载官

    2024年02月11日
    浏览(24)
  • stm32_断点调试无法进入串口接收中断

    先说结果,可能是stm32调试功能/keil软件/调试器(试过STLINK和JLINK两种)的问题,不是代码; 配置完串口后,可以发送数据到串口助手,但不能接收数据并做处理,所以第一步,想确定有没有接收到单个字节进入中断。 开始打断点调试,发现串口数据寄存器DR能收到数据,串

    2024年02月08日
    浏览(34)
  • Keil运行stm32项目无法打断点调试

    有个新同事接了外协写的STM32F429的项目,项目接过来编译和烧录都没问题,但是Debug调试时候没法打断点,没有灰色区域可以点断点,点击运行可以,但点暂停也没有停止黄色光标。debug模式下就如同这样 根据上述现象,找了个示例项目运行是没问题的,说明跟编译器关系不

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包