首页 > 编程语言 >单片机程序运行过程中,某些变量被莫名其妙的修改了

单片机程序运行过程中,某些变量被莫名其妙的修改了

时间:2023-04-11 10:48:08浏览次数:43  
标签:变量 程序运行 修改 莫名其妙 单片机 数组

 

  在开发单片机程序中,遇到这么一个问题,程序运行过程中,某些变量被莫名其妙的修改了,然而经过打断点还有打印信息都完全查不出哪里出了问题,直到我灵光一闪。

解决方法:查 map文件,定位到被修改的变量,然后往上查看有可能的数组。后面经查看找到了可疑数组。然后再查看相关代码。发现有越界访问现象。然后对其进行修复便可以了。用KEIL DEBUG了大半天的问题。然后查看了一下MAP文件就搞定了。

 

  当然,在以往的开发过程中也有过变量被莫名其妙的修改了另外一种情况,就是在函数中定义的局部变量数组太大也会发生这种情况。

 

  总结

  1、尽量使用全局数组

  2、一定要做下标越界检测

  

 

 

  

标签:变量,程序运行,修改,莫名其妙,单片机,数组
From: https://www.cnblogs.com/brave-firm/p/17305386.html

相关文章

  • 怎样学习一款单片机
    1.首先整体死磕规格书,了解各模块是什么?能达到什么效果?有什么特殊之处?2.整体看官方提供的各模块库及各模块DEMO,主要是熟悉寄存器,了解各模块能做哪些功能?3.尝试修改一个官方demo,点亮一个LED,重点看规格书的一个外设,并使用。4.看官方的方案源代码,看看这款MCU具体的应用场景,做那些产......
  • 51单片机看门狗定时唤醒低功
    程序流程:1.检测到符合睡眠条件,进入到睡眠程序。2.初始化看门狗,设置定时唤醒时间,关闭其它外设中断。3.开总中断,只开看门狗中断4.进入睡眠模式5.发生看门狗唤醒中断,清除看门狗定时器,复位看门狗标志,防止复位。6.退出睡眠模式,初始化单片机外设寄存器,打开外设中断。7.执行主程序......
  • 自用纯C语言实现任务调度(可用于STM32、C51等单片机)
    前言  这个任务调度模块的实现是形成于毕设项目中的,用在STM32中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟用自己自主实现出来的功能还是蛮舒心的。任务调度模式结构  整体上的结构属于......
  • C51单片机的基本知识
    目录1.单片机介绍2.STC89C52单片机3.C51在keil5中的器件选型4.C51的时钟频率5.关于单片机的上电1.单片机介绍单片机,英文MicroControllerUnit,简称MCU内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(依靠传感器)、处理......
  • 六轴桌面机械臂 上位机(PC)源码与下位机(单片机)源码
    六轴桌面机械臂上位机(PC)源码与下位机(单片机)源码YID:1690609972944148......
  • C#获取当前程序运行路径的几种方法
    从外部程序启动另一个程序,路径有点不一样;logger.InfoFormat($"{System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName},{System.Environment.CurrentDirectory},{System.IO.Directory.GetCurrentDirectory()}"+$",{System.AppDomain......
  • GD32单片机设置us级延时
    us延时会在很多外设驱动的时候用到,但是GD32提供的资料里面没有看到,只有一个ms延时的函数,不过GD32用的和stm32是一样的内核,因此也可以套用stm32嘀嗒定时器的版本,就是直接用stm32的思路来实现,这里直接贴代码:说明一下实验平台:GD32F470ZG立创梁山派开发板代码如下:#include"del......
  • Mac电脑的hostname莫名其妙的变成了bogon
    这几天用VSCode学习Vue的使用,开始一切正常,前两天在VSCode的终端下执行“npmrunserve“启动Server失败,报告“Error:getaddrinfoENOTFOUNDbogon”错误,开始还以为是自己配置Vue的时候出错了,新开一个VueProject还是出错.Google也没找到解决方法. 没办法在Mac自带的终......
  • 单片机的内存分配你了解多少呢?
    单片机开发也是嵌入式开发中的一个大群体,有许多的的人是进行单片机逻辑开发的,也有些人是单片机+嵌入式实时操作系统,当然也有单片机+linux+人工智能技术的。当然,不管你是什么样的组合方式,只要你最终开发的产品中有使用到MCU,进行程序开发时,都应该会涉及到内存的分配问题。只要是开发......
  • 成都控制板开发:STC单片机IO引脚驱动不了光耦PC817的原因及解决(带PC817参数及驱动电路
    这是一个单片机通过光耦来信号隔离,驱动外部负载的电路。单片机为STC15系列,光耦为PC817,如图1,光耦的阳极输入端接到单片机的P20-P23引脚,光耦的输出DJ1-DJ4接到外部电路。但是在改变P20的电平时却出现了问题,并不能改变DJ1的电平,怎么回事呢?1、是限流电阻的问题吗?先看看光耦的参数......