社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
单片机
›
keil 学习(六)
返回列表
发新帖
回复
阅
2657
|
回
0
yuandayuan6999
当前离线
一粒金砂(中级)
最后登录
2018-11-12
在线时间
29 小时
威望
34分
芯积分
4分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
yuandayuan6999
362
帖子
0
TA的资源
一粒金砂(中级)
+ 好友
私信
楼主
发表于2010-4-16 17:30
只看该作者
keil 学习(六)
[复制链接]
Keil
的辅助工具和部份高级技巧
在前面的几讲中我们介绍了工程的建立方法,常用的调试方法,除此之外,Keil 还提供了一些辅助工具如外围接口、性能分析、变量来源分析、代码作用分析等,帮助我们了解程的性能、查找程序中的隐藏错误,快速查看程序变量名信息等,这一讲中将对这些功工具作 一介绍,另外还将介绍 Keil 的部份高级调试技巧。
一、 辅助工具
这部份功能并不是直接用来进行程序调试的,但可以帮助我们进行程序的调试、程序性 能的分析,同样是一些很有用的工具。
1
、外围接口
为了能够比较直观地了解单片机中定时器、中断、
并行端口、串行端口等常用外设的使用情况,Keil 提 供了一些外围接口对话框,通过 Peripherals 菜单选择,该菜单的下拉菜单内容与你建立项目时所选的 CPU 有关,如果是选择的 89C51 这一类“标准”的 51 机, 那么将会有 Interrupt(中断)、I/O Ports(并行 I/O 口)、 Serial(串行口)、Timer(定时/计数器)这四个外围设
图 1 外围设备之并行端口
备菜单。打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况。
下面我们通过一个简单例子看一看并行端口的外围设备对话框的使用。例 4:
MOV
A,#0FEH
LOOP:
MOV
P1,A
RL
A
CALL
DELAY ;延时 100 毫秒
JMP
LOOP
其中延时 100 毫秒的子程序请自行编写。
编 译 、 连 接 进 入 调 试 后 , 点 击 Peripherals->I/O-Ports->Port 1 打开,如图 1 所示,全速运 行,可以看到代表各位的勾在不断变化(如果看不到变化, 请点击 View->Periodic Window Updata),这样可以形象地 看出程序执行的结果。
注:如果你看到的变化极快,甚至看不太清楚,那么 说明你的计算机性能好,模拟执行的速度快,你可以试着将加长延时程序的时间以放慢速度。模拟运行速度与实际 运行的速度无法相同是软件模拟的一个固有弱点。
点击 Peripherals->I/O-Ports->Timer0 即出现图 2 所示 定时/计数器 0 的外围接口界面,可以直接选择 Mode 组中 的下拉列表以确定定时/计数工作方式,0-3 四种工作方式,
图 2 外围设备之定时器
设定定时初值等,点击选中 TR0,status 后的 stop 就变成了 run,如果全速运行程序,此时
th0,tl0 后的值也快速地开始变化(同样要求 Periodic Window Updata 处于选中状态),直观地演示了定时/计数器的工作情况(当然,由于你的程序未对此写任何代码,所以程序不会对 此定时/计数器的工作进行处理)。
2
、性能分析
Keil 提供了一个性能分析工具,利用该工具,我们可以了解程序中哪些部份的执行时间最长,调用次数最多,从而了解影响整个程序中执行速度的瓶颈。下面通过一个实例来看一 看这个工具如何使用,例 5:
#include "reg51.h"
sbit P1_0=P1^0; //定义 P1.0
void mDelay(unsigned char DelayTime)
{ unsigned int j=0;
for(;DelayTime>0;DelayTime--)
{ for(j=0;j<125;j++) {;} }
}
void mDelay1(unsigned char DelayTime)
{ unsigned int j=0;
for(;DelayTime>0;DelayTime--)
{ for(j=0;j<125;j++) {;} }
}
void main()
{ unsigned int i;
for(;;){ mDelay(10); // 延时 10
毫秒
i++;
if(i==10)
{ P1_0=!P1_0; i=0; mDelay1(10);}
} }
编译连接。进入调试状态后使用菜单 View->Performance Analyzer Window,打开性能分 析对话框,进入该对话框后,只有一项 unspecified,点鼠标右键,在快捷菜单中选择 Setup PA 即打开性能分析设置对话框,对于 C 语言程序,该对话框右侧的“Function Symbol”下的列表框给出函数符号,双击某一符号,该符号即出现在 Define Performance Analyzer 下的编缉框中,每输入一个符号名字,点击 Define 按钮,即将该函数加入其上的分析列表框。对 于汇编语言源程序,Function Symbol 下的列表框中不会出现子程序名,可以直接在编缉框 中输入子程序名,点击 Close 关闭窗口,回到性能分析窗口,此时窗口共有 4 个选项。全速 执行程序,可以看到 mDelay 和 mDelay1 后出现一个蓝色指示条,配合上面的标尺可以直观 地看出每个函数占整个执行时间的比例,点击相应的函数名,可以在该窗口的状态栏看到更详细的数据,其中各项的含义如下:
Min:该段程序执行所需的最短时间;Max:该段程序执行所需的最长时间;Avg:该段程序执行所花平均时间;Total:该段程序到目前为目总共执行的时间;%:占整个执行时 间的百分比;count:被调用的次数。
本程序中,函数 mDelay 和 mDelay1 每次被调用都花费同样的时间,看不出 Min、Max、
和 Avg 的意义,实际上,由于条件的变化,某些函数执行的时间不一定是一个固定的值,借助于这些信息,可以对程序有更详细的了解。下面将 mDelay1 函数略作修改作一演示。
void mDelay1(unsigned char DelayTime)
{ static unsigned char k;
unsigned int j=0;
for(;DelayTime>0;DelayTime--)
{ for(;j
{;}
} k++; }
程序中定义了一个静态变量 K,每次调用该变量加 1,而 j 的循环条件与 k 的大小有关,
这使每次执行该程序所花的时间不一样。编译、执行该程序,再次观察性能分析窗口,可以
看出 Min、Max、Avg 的意义。
3
、变量来源浏览
该窗口用于观察程序中变量名的有关信息,如该变量名在那一个函数中被定义、在哪里 被调用,共出现多少次等。在 Source Browse 窗口中提供了完善的管理方法,如过滤器可以 分门别类地列出各种类别的变量名,可以对这些变量按 Class(组)、Type(类型)、Space
(所在空间)、Use(调用次数)排序,点击变量名,可以在窗口的右侧看到该变量名的更 详细的信息。
4
、代码作用范围分析
在你写的程序中,有些代码可能永远不会被执行到(这是无效的代码),也有一些代码必须在满足一定条件后才能被执行到,借助于代码范围分析工具,可以快速地了解代码的执 行情况。
进入调试后,全速运行,然后按停止按钮,停下来后,可以看到在源程序的左列有三种颜色,灰、淡灰和绿,其中淡灰所指的行并不是可执行代码,如变量或函数定义、注释行等等,而灰色行是可执行但从未执行过的代码,而绿色则是已执行过的程序行。使用调试工具 条上的 Code Coverage Window 可打开代码作用范围分析的对话框,里面有各个模块代码执 行情况的更详细的分析。如果你发现全速运行后有一些未被执行到的代码,那么就要仔细分析,这些代码究竟是无效的代码还是因为条件没有满足而没有被执行到。
工具
,
辅助
,
程序
,
技巧
,
接口
此帖出自
单片机论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
DigiKey 应用探索站 | 无线技术盛宴第二趴
有奖直播 | ADI 超低功耗 MCU MAX326xx 系列介绍
走近 AI 重磅新品 STM32N6,解锁在 MCU 部署高性能、节能型边缘 AI!答题有好礼~还有开发板等你拿!
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
安世半导体智能工业应用探索站,闯关赢好礼!
24年年终盘点来啦!精选强推:原创、测评、拆解、视频、资料
PI 电源小课堂:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
Microchip喊你探索dsPIC33A 芯片,70份好礼等你赢!
开源项目
更多>>
使用 ROHM Semiconductor 的 BD48K37G-TL 的参考设计
111111
LTC2946CDE-1 双电源、电荷和能量监视器的典型应用,使用单个光耦合器进行电流隔离,并在任一电源出现故障时使用阻塞二极管来保持数据
TA7281P双极线性集成电路硅单片典型应用
LT8315EFE 12V 高输入电压隔离反激式转换器的典型应用电路
LTM8052IV 5.6A、36Vin 为两个 2.5V 系列超级电容器充电的典型应用
TC4056A 单节锂电池充电模块
BGA3015 - 1GHz、15dB 增益宽带放大器 MMIC
SiC464 4.5 至 60 V 输入、2A microBUCK DC/DC 转换器的典型应用
适用于汽车应用的 LT3973IMS 5V 降压转换器的典型应用
随便看看
今天拿到了盲盒TPS61088EVM-677板子,测试了以下结果,如何能提高负载?
今天拿到了盲盒TPS61088EVM-677板子,测试了以下结果如何能提高负载?[attach]885080[/attach]一、测试9V输出纹波很不错。二、改R3为85k其他没改输出电压变为12.2V输入42V,以上可以。输出负载带一个50W20欧姆的电阻可以工作。纹波也好。输出负载带一个50W20 ...
测评入围名单: 树莓派Pico 2 RP2350开发板
测评入围名单: PolarFire SoC FPGA Discovery 套件
求救!!用EVC创建的MFC对话框程序选择PB5编译导出的SDK出现cannot open include file 'afxres.h'.
【视频】ENEA Software Offering for SoC
2013材料清单出来了,讨论一下
【中科蓝讯AB32VG1 RISC-V评估板】遇到的问题:USB和蓝牙
DM642 FVID驱动
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
超声气体流量计
工业以太网总线
气隙击穿电压
X射线衍射仪
接触电势差
截止频率
黑盒测试
电力通信
散热片
EOC
相关文章
更多>>
Videtronic开发出利用 GMSL2 延长树莓派摄像头电缆的方案
Videtronic 的 V-Link 是一款紧凑型解决方案,旨在运用 GMSL2(千兆多媒体串行链路 v2)技术,通过长达 15 米的电缆扩展树莓派 MIPI DSI 摄像头的使用范围。此前,这种
我国科学家制备出高性能柔性叠层太阳电池,光电转换效率达 23.4%
2 月 6 日消息,IT之家从西湖大学微信公众号获悉,该校未来产业研究中心、工学院王睿团队在柔性叠层太阳电池领域取得重要突破 —— 他们成功让钙钛矿与铜铟镓硒两种材料叠在一起,光电转换效率达到 23
消息称软银接近达成收购芯片设计公司 Ampere 的协议
2 月 6 日消息,据彭博社报道,知情人士透露,软银集团(SoftBank Group Corp.)正就收购半导体设计公司 Ampere Computing LLC 展开深入谈判。 知情人士称,此次
消息称英伟达将推 Orin Y 平替 Orin X 汽车智驾芯片:算法可无缝迁移,抢占入门市场
LG新能源为特斯拉新款Model Y供应2170电池,南京工厂生产
波士顿动力携手前 CEO,提升 Atlas 人形机器人学习能力
苹果M5芯片被曝已进入量产阶段,日月光、长电科技、Amkor负责封装
和扎手指说拜拜!无创血糖检测来了
德州仪器2025资本管理大会,揭露半导体巨头的战略走向
人形机器人厂商Figure终止与OpenAI合作 因自研技术取得重大突破
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
有奖直播:ADI 超低功耗 MCU MAX326xx 系列介绍
直播时间:3月20日(周四) 上午10:00
活动奖励:双肩包、充电宝、小夜灯
查看 »
【回帖赢京东卡】无线技术盛宴第二趴
【活动时间】即日起—2025年2月28日
【活动好礼】30元京东卡
查看 »
DigiKey 应用探索站 | 无线技术盛宴第二趴
当月好物、热门无线技术资源、特色活动、DigiKey在线实用工具,干货多多~
查看 »
开发板申请:拥有 AI 加持的 STM32N6570-DK 免费试用 !
申请时间:即日起-3月2日
查看 »
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/8
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
边缘AI
嵌入式系统
单片机
国产芯片交流
电机控制
FPGA/CPLD
模拟电子
电源技术
无线连接
传感器
PCB设计
综合技术交流
下载中心专版
大学堂专版
测评中心专版
行业应用
汽车电子
机器人开发
工业自动化与控制
能源基础设施
医疗电子
消费电子
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛