0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

致单片机程序总是跑飞怎么办

Q4MP_gh_c472c21 来源:个人图书馆 作者:xpxys99 2021-09-26 10:45 次阅读

单片机中有看门狗,长时间不喂狗,程序就会复位。为什么长时间不喂狗呢?这是因为程序跑飞了,抛开外部因素不谈。今天就和大家分享一下,单片机程序跑飞的几个原因。

在编写单片机程序的时候,由于中断服务程序写的不好,导致单片机程序总是跑飞,最后费了好长时间,花了很大功夫才找到问题原因,由此总结了单片机程序跑飞的三种现象、原因以及解决方法。

01数组越界/溢出

现象:

单片机程序在函数中运行时,总是在运行到函数末尾,要跳出函数时,程序跑飞。

原因:

数组越界(数组溢出),函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数,例如在函数中定义了一个数组ucDataBuff[10],这个数组只有10个元素,但是在函数中却有这样的语句ucDataBuff[10]=0x1a,这个语句是给数组的第11个元素赋值,:由于定义的数组只有10个元素,从而导致赋值语句中不知道把0x1a放到什么地方,从而导致程序跑飞。

解决方法:

如果在调试程序时,发现程序总是在函数执行完毕时跑飞,多数情况是发生了数组越界(数组溢出)的错误,仔细检查函数中调用的数组是否存在越界(溢出)的情况。

0

2

中断服务程序缺失

现象:

程序运行过程中总是跑飞。

原因:

程序中打开了某个中断,但是却没有相应的中断服务程序,从而导致在中断发生后,找不到中断服务程序入口,从而导致程序跑飞。

解决方法:

检查程序中是否存在打开了某个中断,但是没有相对应的中断服务程序。

0

3

看门狗复位

现象:

在执行一段较为耗费时间的程序时,程序跑飞,并且总是跳到复位位置处。

原因:

程序中使用了看门狗,但是没有及时“喂狗”,从而导致看门狗复位,使程序直接跳到复位位置。

解决方法:

根据程序运行时间,尤其是一定要计算清楚最耗时的那段程序的运行时间,然后准确设置看门狗的复位时长,定时“喂狗”,尤其是如果有死循环的情况,一定要在死循环中记得“喂狗”。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43948

    浏览量

    620549
  • 看门狗
    +关注

    关注

    10

    文章

    540

    浏览量

    70234
  • 程序
    +关注

    关注

    114

    文章

    3629

    浏览量

    79497

原文标题:单片机程序又跑飞?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HC32L136 M0+内核在写FLASH时程序的原因?

    使用一款华大的HC32L136单片机M0+的内核64k的flash,在0x0-0x8000放入bootloader 在0x8000-0xFFFF放入用户代码,在全速 执行用户代码中FLASH操作
    发表于 04-18 06:04

    调试FreeRTOS程序,通过IAP升级后程序的原因?

    最近调试FreeRTOS程序,发现直接用IAR下载APP后程序运行正常,但是通过IAP升级后却发现程序(因为是IAP升级,无法调试App
    发表于 04-08 06:25

    单片机Freertos怎么样?

    单片机Freertos好移植么?参考资料好不好找?
    发表于 03-25 15:22

    AURIX2G系列的单片机多核程序应该怎么配置?

    AURIX2G系列的单片机多核程序应该怎么配置,感觉没有头绪
    发表于 02-20 06:15

    单片机RAM不够用怎么解决?

    来自一位用户的咨询,麻烦帮忙解答。越详细越好,有图有真相。如有相关的视频、文档也可以辅助说明,谢谢。 单片机RAM不够用怎么办单片机都有RAM,如果我们一下子定义了一大堆的变量,使得变量占的空间大于RAM,这样
    发表于 02-02 07:35

    单片机在实际应用中怎样防干扰?

    单片机在实际应用中怎样防止静电获得其他带来的干扰导致程序
    发表于 11-09 07:25

    51单片机可以操作系统吗?

    据说单片机可以上操作系统,那51单片机可以上操作系统吗,感觉51单片机性能那么差,还能跑操作系统? 如果可以的话都可以那些操作系统呢?
    发表于 11-06 06:59

    STC8单片机下载时显示文件超出范围怎么办

    STC8单片机下载时显示文件超出范围怎么办,怎么能把程序下进去
    发表于 10-28 07:04

    51单片机不能识别红外循迹模块发出的的高电平怎么办

    51单片机不能识别红外循迹模块发出的的高电平怎么办
    发表于 10-23 07:02

    51单片机不能识别红外循迹模块发出的的高电平怎么办

    51单片机不能识别红外循迹模块发出的的高电平怎么办
    发表于 10-18 06:09

    程序后可以恢复到的地方继续运行吗?

    程序后可以恢复到的地方继续运行吗
    发表于 10-12 07:03

    请问单片机串口不够用怎么办

    做一个设计用的STC12C5A60S2单片机,有三个模块都需要用RXD和TXD串口,但是单片机只有两个串口怎么办?三个模块中,有一个只发送数据,另一个只接收数据,可以把这两个模块连在同一个RXD和TXD串口上吗?
    发表于 09-20 06:49

    为什么单片机会突然死机

    单片机
    YS YYDS
    发布于 :2023年06月19日 18:55:34

    怎么防止电源线正负接反烧坏单片机呢?

    4.5V,看来二极管分了0.5V的电压造成单片机电压不够了,这个时候怎么办呢,怎么才能防止电源线接反,又能保证单片机正常工作呢?
    发表于 05-09 16:10

    单片机与PC串口调试时,单片机收到的数据总是错误的?

    单片机与PC串口调试时,单片机收到的数据总是错误的,波特率与串口通讯方式都一样,求解
    发表于 04-23 10:19