keil5的仿真调试

keil5的仿真调试
仿真调试的作⽤
  1.仿真调试实时跟踪代码的运⾏,逐步执⾏代码,程序出现问题并能跟踪到问题所在;
  2.设置调试断掉,使程序运⾏到指定位置停下;
  3.能够观察全局变量的变化、寄存器的变化;
点焊机电极bbzs  4.可以查询某个内存地址的存储的数据;
  5.显⽰调⽤栈的内容,也就是函数指针和局部变量;
  6.可以查询⽚内外设和⽚外外设的寄存器变化,对照芯⽚⼿册的相应寄存器的说明,便可以知道相应外设寄存器的值是否出错。调试界⾯常⽤按钮
  以上为调试界⾯常⽤的按钮
  以上为查看⽚内外设寄存器的操作,结合芯⽚⼿册相应寄存器的说明,便可以明⽩相应外设寄存器的值是否符合预期。
编译优化
  以上为将编译器设置为-O2优化的⽅法,编译器想尽办法去压缩程序存储空间,提⾼运⾏速度。⼀般编译器,优化有多个等级:-O0、-O1、-O2、-O3:
shlr
    -O0:默认优化级别,不压缩程序存储空间,不提⾼程序运⾏速度,保证程序的可靠执⾏;
    -O1:轻度优化,轻度压缩程序存储空间,轻度优化程序运⾏速度;
毛细管数
    -O2:推荐优化等级,在程序存储空间和程序运⾏速度取得平衡点;
    -O3:最⾼级别的优化等级,有可能导致程序不能运⾏,也会使⽤以空间换时间的⽅法,导致程序体积增⼤。
-O0:
-O2
27.5g bt
  以上为不优化和使⽤-O2优化编译同⼀⼯程所产⽣的结果,可以看出使⽤-O2将输出的可执⾏⽂件减⼩了10%,这还是很可观的,所以能优化的时候尽量使⽤优化。
volatile关键字
  注意如果使⽤了-O2优化有些变量的定义就需要volatile关键字修饰,CPU去访问被volatile修饰的变量时会⼩⼼翼翼去去实际所在的内存地址中去读取它的值,⽽不是去读取保存在寄存器中的备份, volatile往往应⽤在三种场合:
    1.多线程编程共享全局变量的时候,该全局变量要加上volatile进⾏修饰;
    2.裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上volatile进⾏修饰,让编译器不要省略该变量的访问;
宁码输入法    3.CPU访问外设寄存器的时候,寄存器是指向⼀个地址,需要加上volatile进⾏修饰,表⽰让CPU去该地址读取值,⽽不是使⽤备份的值。
总结
  1.调试时如果要查看局部变量的值就不应使⽤优化,不然不能够在Call Stack窗⼝中查看但局部变量的值;
  2.watch窗⼝只能跟踪全局变量的值;
  3.延迟函数的计数值在使⽤-O2优化时,需要使⽤volatile修饰,不然会被优化⽽不能延迟。

本文发布于:2024-09-21 22:15:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/134494.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   寄存器   优化   全局变量   时候   修饰
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议