当前位置: 首页 > news >正文

php网站开发学什么网站建设出售

php网站开发学什么,网站建设出售,wordpress账号邮箱,wordpress自定义注册目录 前言 一、程序跑飞原因 二、调试工具 2.1Registers工具 2.2 Memory工具 2.3 Disassembly工具 2.4 Call Stack工具 三、找到程序跑飞位置 方式一、 方式二、 前言 我们初学STM32的时候代码难免会出现疏忽#xff0c;导致程序跑飞#xff0c;不再正常运行#…目录 前言 一、程序跑飞原因 二、调试工具 2.1Registers工具 2.2 Memory工具 2.3 Disassembly工具 2.4 Call Stack工具 三、找到程序跑飞位置 方式一、 方式二、 前言 我们初学STM32的时候代码难免会出现疏忽导致程序跑飞不再正常运行那么都是什么情况会导致STM32程序跑飞呢 一、程序跑飞原因 软件导致STM32跑飞程序失控或死机的原因有多种主要包括以下几个方面 中断处理不当 未响应或清除中断标志如果打开了某个中断但没有及时响应和清除中断标志程序可能会持续进入中断造成死机假象。中断变量处理不妥如果定义了某些会在中断中修改的全局变量但没有正确管理这些变量如使用volatile关键字声明或在读取前关闭全局中断可能会导致数据不一致或程序异常。 堆栈溢出 当项目代码量较大时如果默认的堆栈设置过小或者程序中存在大量的函数调用和局部变量可能导致堆栈溢出使程序跑飞。 不合理的内存操作 内部Flash存储操作不当不合理的Flash内存操作也可能导致程序死机。数组越界如果在使用数组时没有控制好下标导致数组越界可能会意外修改系统的寄存器或数据造成程序失控。 死循环 程序中存在的无条件的死循环如while(1)循环中缺少跳出条件也可能导致程序无法继续执行后续操作。 看门狗未喂或未关闭 如果使用了看门狗功能但没有在适当的时候喂狗或者看门狗被意外开启但没有关闭都可能导致程序被频繁复位。 二、调试工具 我们要发现程序在哪跑飞了肯定是要借助调试工具了以下几个工具是我们需要用到的。 2.1Registers工具 (1)通用寄存器R0~R12 R0~R7这些是低组寄存器所有指令都可以访问。它们的大小为32位复位后的初始值不定。R8~R12这些是高组寄存器只有部分的16位Thumb指令可以访问而32位Thumb-2指令则不受限制。它们的大小同样为32位复位后的初始值也不定。 (2)特殊功能寄存器 堆栈指针SP也称为R13在Cortex-M4内核中有两个堆栈指针——主堆栈指针MSP和进程堆栈指针PSP。MSP用于异常服务例程和需要特权访问的应用程序代码而PSP则用于常规的应用代码。连接寄存器LR即R14主要作用是保存子程序的返回地址以便在执行完子程序时恢复现场。程序计数器PC即R15用于指示当前执行的指令地址。在Cortex-M系列中由于采用指令流水线技术读取PC会返回当前指令地址4以兼容Thumb代码。 (3)程序状态寄存器xPSR xPSR是程序状态寄存器它又被分为三个子状态寄存器 应用程序状态寄存器APSR中断状态寄存器IPSRPRIMASK只有1个位置1时关闭所有可屏蔽的异常。FAULTMASK只有1个位置1时只有NMI非屏蔽中断可以响应。BASEPRI8位寄存器定义了被屏蔽优先级的阈值。 (4)控制寄存器Control 控制寄存器用于控制FPU浮点单元的激活、堆栈指针的选择以及线程模式的特权级等。 2.2 Memory工具 Memory Window是Keil调试环境中的一个窗口它提供了对程序内存的直接访问。通过这个窗口你可以查看内存中的字节、字、双字等数据并可以实时修改这些数据以测试程序的行为。这对于调试和验证程序中的内存访问、堆栈使用、变量存储等问题非常有帮助。 2.3 Disassembly工具 在Disassembly窗口中你可以看到程序的反汇编代码。这些代码是程序在CPU上实际执行的指令的文本表示。你可以滚动窗口来查看不同的部分或者使用窗口中的搜索功能来定位特定的代码或地址。 2.4 Call Stack工具 Call Stack调用堆栈界面是一个关键的调试工具它允许开发者查看程序执行过程中函数调用的顺序和当前的位置。Call Stack窗口将显示当前函数调用的堆栈。这包括每个函数的调用顺序、每个函数的名称如果可用以及调用该函数的地址。你可以看到程序是如何从main函数开始逐步调用其他函数直到达到当前执行点的。 三、找到程序跑飞位置 介绍完了程序跑飞的原因以及调试工具以后接下来我为大家说一下如何找到程序跑飞的位置有两种方式。 方式一、 1在HardFault_Handler这个函数里面打上断点程序跑飞都会进入这个中断。 2在Registers工具中找到R13的值。 3在Memory工具中搜索刚才R13的值然后找到0800开头的值。 4在Disassembly工具中右键选择Show Disassembly at Address然后将0x08001548复制进去点GO TO就找到程序在哪跑飞了。 方式二、 1和上面第一步一样在HardFault_Handler这个函数里面打上断点。 2程序进入断点以后先点继续运行然后停止运行程序打开Call Stack工具找到HardFault_Handler然后右键选择 show Caller Code就可以找到跑飞之前运行的代码了。 注意 1方式一和方式二都需要先在HardFault_Handler打断点才能进行 2方式二不停止程序不会出现show Caller Code 3如果是堆栈溢出方式一二均无效因为这两个方式都是通过堆栈进行寻址的。
http://www.tj-hxxt.cn/news/143940.html

相关文章:

  • 花都移动网站建设专业的网上购物平台
  • 山东建设厅科技处网站wordpress插件库
  • 安徽省建设工程安全 协会网站seo优化技术培训中心
  • 百度统计网站网线制作的注意事项
  • 如何用jeecg建设网站wordpress如何设置关键词和描述
  • 江西省住房城乡建设厅网站工程建设数字化管理平台app下载
  • seo 网站结构多个网站 备案吗
  • 深圳网站建设 设计首选深圳市百度包头网站建设
  • 学校网站制作大悟网站制作
  • 网站色调设计方案中山 网站建设
  • 做网站大概一个月多少工资设计素材网址
  • 化妆品商城网站建设策划方案ppt在线预览wordpress
  • 乐清做网站的公司有哪些优秀网站设计赏析
  • 厂房建设招标网站博客营销是一种新兴的网络营销方式
  • 上海市建设三类人员报名网站wordpress本地打开
  • 舟山外贸建站公司公网带宽1m能建设电商网站吗
  • 无锡公司建立网站wordpress付费文章插件
  • 海南省住建设厅网站报监的工程抖音seo排名优化公司
  • 网站设计素材图片aso排名
  • 诸暨制作网站的公司有哪些毕设网站代做一般预算多少钱
  • 网站建设公司找上海站霸杭州网络游戏公司排名
  • 网站制作需要多少钱kwordpress的导航代码
  • 营销网站设计上海天气北京南站地铁几号线
  • 贸易网站模板企业信用信息查询公示系统河北
  • 怎么在网上卖东西视频淄博seo方案
  • 专业设计网址青岛网站开发高性能网站建设进阶指南
  • 重庆 网站 建设静乐县城乡建设局网站
  • 怎么样提升网站权重wordpress 导航网站模板下载
  • 策划对于企业网站建设来说北海涠洲岛旅游网站建设分析
  • 深圳建设局网站宝安分中心苏州关键词优化平台