Keil51log设计jasonleeee

任何软件编程都需要有调试信息输出来进行,软件的调试。

在做keil51软件项目时,一般使用UART或者RS232输出调试信息。

那如何输出适合自己项目的调试信息,有下面几个方案可以参考。

首先,需要调试好uart输出接口,可以正常输出字符。

如果只需要打印字符串而不需要打印变量参数,那么就比较简单。只需要像如下这样打印:

但是,这样设计只能适用简单的设计,如果设计稍微复杂点就需要打印参数的数值。而上面的方式没有办法完成这样的需求。

那么就需要使用keil51库中支持的打印方式,通过重定向打印的接口来实现正常调用库中的printf,sprintf等函数,当然也可以自己实现printf函数。

函数名及定义

功能说明

char_getkey(void)

等待从8051串口读入一个字符并返回读入的字符,这个函数是改变整个输入端口机制时应做修改的唯一一个函数

chargetchar(void)

使用_getkey从串口读入字符,并将读入的字符马上传给putchar函数输出,其他与_getkey函数相同

char*gets(char*s,intn)

该函数通过getchar从串口读入一个长度为n的字符串并存入由s指向的数组。输入时一旦检测到换行符就结束字符输入。输入成功时返回传入的参数指针,失败时返回NULL

charungetchar(charc)

将输入字符回送到输入缓冲区,因此下次gets或getchar可用该字符。成功时返回char型值,失败时返回EOF,不能处理多个字符

charputchar(charc)

通过8051串行口输出字符,与函数_getkey一样,这是改变整个输出机制所需要修改的唯一一个函数

intprintf(constchar*fmstr[,argument]...)

以第一个参数指向字符串制定的格式通过8051串行口输出数值和字符串,返回值为实际输出的字符数

intsprintf(char*s,constchar*fmstr[,argument]...)

与printf功能相似,但数据是通过一个指针s送入内存缓冲区,并以ASCII码的形式存储

intputs(constchar*s)

利用putchar函数将字符串和换行符写入串行口,错误时返回EOF,否则返回0

intscanf(constchar*fmstr[,argument]...)

在格式控制串的控制下,利用getchar函数从串行口读入数据,每遇到一个符合格式控制串fmstr规定的值,就将它按顺序存入由参数指针argument指向的存储单元。其中每个参数都是指针,函数返回所发现并转换的输入项数,错误则返回EOF

intsscanf(char*s,constchar*fmstr[,argument]...)

与scanf的输入方式相似,但字符串的输入不是通过串行口,而是通过指针s指向的数据缓冲区

voidvprintf(constchar*s,char*fmstr,char*argptr)

将格式化字符串和数据值输出到由指针s指向的内存缓冲区内。类似于sprintf,但接受一个指向变量表的指针,而不是变量表。返回值为实际写入到输出字符串中的字符数

Cx51User'sGuide中对charputchar(charc)的描述如下

Theputcharfunctiontransmitsthecharactercusingtheserialport.

Note

Theputcharroutinereturnsthecharacteroutput,c.

现在只考虑打印调试信息,获取字符不用管。在code中加入这段代码就可以实现重定向,但是不要忘记#include

参考keil安装文件内的定义function

Keil\C51\LIB\PUTCHAR.C

如何是C99的编译器可以使用下面的方式来设计调试信息的打印,遗憾的是keil51只支持C89的编译器,不能使用__VA_ARGS__宏

或者

这个版本的DRV_PRINT(x)只能输出单变量——纯字符串,

不需要打印调试信息时,更改DRV_DEBUG宏定义

当然也可以直接这样定义

如果只需要打印一个变量,第2个参数用随意值填位,如

类似,如果有4个参数,就:

这种方式使用起来比较麻烦,而且受参数个数的限制,比较笨的方案,但是没办法:(,VxWorks5.5内核代码里就是这样干的!

通过下面这种定义,使用的时候需要两个括号,虽然两个括号使用起来有些麻烦,但是比V2的多个参数还是相对好点。

keil51的log打印方式,但是调用宏时不能换行,使用‘\’换行也不行

每种方式都有优缺点,选择适合自己项目的方式。

在处理不同的模块,不同的重要程度的信息,我们就需要实现分层的设计。下面试linux的分层级别,不过对于keil51这种级别的设计8种分层过于多,其中的大部分级别是用不到的,

定义出来,也就没有意义,只是作为参考。

linuxkernel的日志级别

#defineKERN_EMERG"<0>"/*systemisunusable*/#defineKERN_ALERT"<1>"/*actionmustbetakenimmediately*/#defineKERN_CRIT"<2>"/*criticalconditions*/#defineKERN_ERR"<3>"/*errorconditions*/#defineKERN_WARNING"<4>"/*warningconditions*/#defineKERN_NOTICE"<5>"/*normalbutsignificant*/#defineKERN_INFO"<6>"/*informational*/#defineKERN_DEBUG"<7>"/*debug-levelmessages*/

下面提供两种分层方式,使用v2--指定参数宏或者v3--参数数量可变宏都是可以的。

1.如果分层比较多的可以参考下面的设计方式来做分层设计1

2.如果认为不需要这么多分层那么可以简单的使用下面的方式。

在keil51的标准输入输出库中,打印的函数有上面的三个printf,sprintf,vprintf,vsprintf那么该如何选择使用那个呢?

函数的定义

1.printf和sprintf都是可变参数打印

2.vprintf和vsprintf需要配合使用。在需要实现自己的打印函数时可以使用。

例如

说明

使用参考代码

3.sprintf和vsprintf使用起来比较危险,都是输出到buff中的,需要注意buff的大小,以防buff爆掉误写入其他的地方,造成程序崩掉。

对打印的内容做加一些处理,可以使用这两个函数。

例如:

可以在打印error时默认在前面加入"Error:"

一般我们在写printf时都是用'\n'来回到下一行的开始,但是在不同的系统'\n'的行为不一致。

参考下面的'\r','\n'的说明,我们需要自动在'\n'之前加入'\r'.

一般实现方式有两种。

1)通过putchar方式

参考keil51中的code

这样看起来比较清楚点

2)通过spprintf,svprintf将打印出来的字符串中的'\n'之前加入'\r'.

1、\n软回车:

在Windows中表示换行且回到下一行的最开始位置。相当于MacOS里的\r的效果。在Linux、unix中只表示换行,但不会回到下一行的开始位置。

2、\r软空格:

3、\t跳格(移至下一列)。

它们在双引号或定界符表示的字符串中有效,在单引号表示的字符串中无效。\r\n一般一起用,用来表示键盘上的回车键,也可只用\n。\t表示键盘上的“TAB”键。就像你使用enter和shift+enter的区别

4、文件中的换行符号:

linux,unix:\r\nwindows:\nMacOS:\r

5、常用转义符号的意义:\nLF或ASCII中的0x0A(10)\rCR或ASCII中的0x0D(13)\t水平制表符-HT或ASCII中的0x09(9)\\反斜杠\$美圆符\"双引号\'单引号

THE END
1.51学设计51学设计网(51xsj.cn)致力于为广大设计师提供优质的设计教程自学平台,教程由众多资深设计师、插画师、美术工作者、高级设计教育讲师联合打造。为了保障课程的优质性,课程案例和讲解方式均为我要学设计教研组联合设置并严格审核。https://www.51xsj.cn/
2.51cg更名成什么了最新动态揭示新品牌背后的故事与发展方向最新消息:51cg于近期正式更名为“51创意”,这一变化引发了广泛关注,许多用户和业内人士纷纷讨论新品牌背后的故事与发展方向。 新品牌的诞生 51cg作为一个知名的创意设计平台,一直以来以其丰富的资源和便捷的服务受到广大用户的喜爱。然而,随着市场需求的不断变化以及自身业务的发展,51cg决定进行一次全面升级,以适应新http://www.qycwgc.com/yaglxmq/5430782596.html
3.SI设计SI设计案例SI设计公司易源品牌策划51design-优秀设计师和高质量用户,甄选创新资源,精准匹配需求,提供以产品设计、品牌设计、交互设计及空间设计四链融合的整合性众创设计服务。https://www.51design.com/work/281.html
4.基于51单片机设计的简易电子琴单片机电子琴程序代码基于51单片机设计的简易电子琴 下面直接给出proteus仿真电路。仿真和代码下载点击这里。 代码如下: #include<reg51.h> #defineuint unsigned int #defineuchar unsigned char #defineoutput P1 #defineinput P1 //方便移植在其他电路板上,我的电路使用P1口做键盘输入接口 https://blog.csdn.net/zy010101/article/details/80538312
5.易上手!顶尖设计公司IDEO的51张创新卡片中文版(一)IDEO 是全球顶尖的设计咨询公司,其团队总结的 51 张创新方法卡片简单易懂,实操性强,堪称每个设计师的必备读物。欢迎关注作者的微信公众号:「业余体验设计」https://www.uisdc.com/ideo-51-design-cards
6.51设计圈下载51设计圈最新版下载51设计圈app下载51设计圈下载更新时间:2024-11-18安卓版下载 苹果版下载 7.7 已有41人评分 您还未评分!51设计圈下载栏目提供了最全的51设计圈版本内容,喜欢这款软件的用户,可以下载最新的官方版本,还能够找到相同类型的APP,保证每一位来到这里的玩家都能够找到感兴趣软件版本。https://app.3dmgame.com/zt/12773_game/
7.51设计51设计图片51设计图片素材大全智能精选为您提供丰富的51设计图片素材,51设计创意,51设计图片素材下载。助力您对于51设计创意的创意设计灵感,充实饱满作品,查找更多创意作品选择摄图网下载https://699pic.com/image/51sheji.html
8.51设计大全51全套素材红动中国提供各类原创51设计素材下载,涵盖了大部分51类目,展示了热门51素材和51设计图片,有流行51元素,现成51模板,成套51作品,免费51素材,为各行各业提供极大便利。https://so.redocn.com/51-0/
9.五十一logo设计黑色,数字,星星,51五十一 五十一logo设计 五十一LOGO的设计思路:通过对矢量元素与文字排版的结合呈现logo满足客户需求 关键词:黑色,数字,星星,51https://www.shejilogo.com/works/125636.html
10.51设计模板图片免费下载51设计模板素材51设计模板模板千图网为您找到404张51设计模板相关素材,千图网还提供51设计模板图片,51设计模板素材, 51设计模板模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://www.58pic.com/tupian/51shejimoban.html
11.自学电脑3D教程平面教程影视动画教程办公教程机械设计我要自学网-免费视频教程,提供全方位软件学习,有3D教程,平面教程,多媒体制作教程,办公信息化教程,机械设计教程,网站制作教程,电脑培训https://www.51zxw.net/
12.欢度51图片创意设计大全熊猫办公精心为用户挑选80张高清精美51图片、支持专业级51设计素材下载,更多风格的51,免抠元素,卡通手绘素材图片、图标图案、免抠矢量图,尽在熊猫办公。https://www.tukuppt.com/speciall/511463.html
13.51首饰设计网的个人主页登录/ 注册 22 粉丝 0 关注 51首饰设计网 来自上海 51首饰设计网,中国最大的饰品设计款式图库,提供珠宝首饰款式图和专业杂志下载! 2012巴黎高级定制时装周 1 品牌饰品画册 1https://huaban.com/shoushi
14.51DESIGN设计小站的微博51DESIGN设计小站,51DESIGN平台运营总监。51DESIGN设计小站的微博主页、个人资料、相册,华东理工大学,51design设计平台。新浪微博,随时随地分享身边的新鲜事儿。https://weibo.com/u/3658027350
15.51首饰设计网51首饰vi设计网51首饰设计网-51首饰vi设计网是一个专注于首饰设计和vi设计的网站。在这里,设计师们可以展示自己的作品,与其他设计师交流经验,共同探讨首饰设计的创新与发展。同时,这个网站也为首饰品牌提供了vi设计服务,帮助他们塑造独特的品牌形象。在这个充满创意和灵感的平台上,首饰设计师和品牌商可以相互启发,共同推动首饰设计行业https://www.rhtimes.com/brand/Brand-planning19911.html
16.51单片机,———EEWorld参考设计中心51单片机 设计简介 集成USB转UART(基于CH340设计) RS232通讯(基于MAX232设计) 4段数码管显示(使用PNP 8550 三极管驱动) 支持LCD1602显示模块 支持AD采集、蜂鸣器、按键、流水灯 !注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。 相关器件https://www.eeworld.com.cn/RDesigns_detail/51565
17.51首页设计51首页模板51首页图片觅知网为您找到297个原创51首页设计图片,包括51首页图片,51首页素材,51首页海报,51首页背景,51首页模板源文件下载服务,包含PSD、PNG、JPG、AI、CDR等格式素材,更多关于51首页素材、图片、海报、背景、插画、配图、矢量、UI、PS、免抠,模板、艺术字、PPT、视频等设计https://www.51miz.com/so-sucai/3738891.html
18.51盖房设计图别墅图纸库自建房设计大全找51盖房设计图?图纸之家提供数千套新农村/乡村51盖房设计图方案,(全套施工图+外观效果图片+户型图),包括一层、二层、三层、四层、五层等多种层高的51盖房设计图,含新中式、豪华欧式、简欧现代、美式、地中海、法式、普通经济型等多种风格51盖房设计图,有独栋、双拼https://tuzhizhijia.com/tuku/20806.html
19.51logo标志设计模板下载LOGO/吉祥物设计素材下的其它设计模板汇图网提供原创优质的51logo标志设计模板下载,本作品以51logo标志作为灵感来源,原创设计高清素材独家出品供您下载,格式为AI,您感兴趣的可能还有1logo,1号logo,1标志,51,51logo,51标志,SILOGO,SI标志,一logo,建筑logo图片素材,还有51logo标志千万VIP素材欢迎会员进行下载https://www.huitu.com/design/show/20191026/132651477070.html
20.基于51单片机设计的花样流水灯设计基于51单片机设计的花样流水灯设计 一、项目介绍 花样流水灯是一种常见的LED灯效果,被广泛应用于舞台表演、节日庆典、晚会演出等场合。在现代智能家居、电子产品中,花样流水灯也被广泛使用,通过调整亮灭顺序和时间,可以实现各种炫酷的灯光效果,增强用户体验。而51单片机作为一种常见的嵌入式开发平台,具有体积小、功耗低https://blog.51cto.com/u_11822586/6718610
21.基于51单片机设计的电动车控制器为了更好地满足市场需求和科技进步的要求,本项目基于51单片机设计了一款电动车控制器。主要包括电动车控制和驱动两个关键部分。其中,控制部分采用51单片机作为控制核心,通过编程实现电动车前后行驶、左右转向、加速等操作。而驱动部分则采用L298N驱动芯片驱动直流电机。当前设计的电动车,支持锂电池供电、支持按键实现电动车https://m.elecfans.com/article/2101477.html
22.PS怎么设计51旅游海报1、【打开】PS软件,【新建】画布大小1000×500像素,【分辨率】72ppi,【颜色】如图。2、【前景色】为蓝色,【渐变工具】填充。 3、【新建】图层,【渐变工具】白色径向填充。【Ctrl+T】调https://huke88.com/baike/a592/
23.51图模网家装美图3D家装模型家装设计师51图模网(51tumo.com),家装设计师互动平台。深耕家装设计领域十年,图模网聚集了200万设计师、家装设计师、效果图设计师、室内设计师、兼职设计师,设计创意群体中具有较高的影响力与号召力! ,https://www.51tumo.com/
24.设计创新,让一切更美好:IDEO的51张卡片IDEO卡片是一组51张的套卡,每一张卡片都是他们内部使用的技巧和方法。卡片正面为图,背面是说明文字。卡分为Learn、Look、Ask、Try四大类:Learn、Look、Ask和Try。Learn比较接近资料收集分析,Look陈述各种观察的方法,Ask描述访谈询问的技巧,而Try则和雏形或模拟较为相关。 https://www.meipian.cn/3b8hvbdw
25.POP首饰趋势网专业珠宝首饰设计网珠宝首饰流行趋势预测POP首饰趋势网为珠宝首饰设计企业、设计师提供专业权威流行趋势预测报告、市场分析报告、海量珠宝品牌款式素材图片、发布会珠宝首饰流行款式、专业珠宝首饰杂志书刊、品牌首饰饰品画册等珠宝首饰设计素材,从而助力首饰珠宝设计研发。http://imgwd1.pop-fashion.com/
26.有才的网友盘点那些令人崩溃的设计:设计师我忍你很久了!01:51 盘点那些令人崩溃的设计 11:02 最绝望的女主角 01:44 盘点那些6到让我们窒息的操作 01:53 高手气质这块被拿捏的SS的! 02:05 你班里有没有才艺超常的同学 02:31 盘点各种演出上的“神仙”观众 01:37 女生的自拍有多不可靠! 02:13 盘点震撼全校的好声音 02:20 每个班里都有个同学负责承包笑点 09https://www.mgtv.com/b/327746/6068548.html
27.画册设计宣传册设计样本设计51画册网是一家专业的常州画册设计公司,业务涉及常州,南京,苏州,无锡,镇江丹阳,上海,浙江等区域,为led照明灯具,机械设备,新能源等企业提供企业画册设计,产品宣传册设计,创意海报设计,营销样本设计制作服务,公司配备专业设计团队,为客户提供具有营销传播力的视觉方案.https://www.51huace.com/
28.UI面试常见问题51、网页设计应该注意哪些内容? 答案:六个纬度:色彩;文字;图像;版式;规范;细节。41、使用CSS布局的网页应实现哪些要求? (1)宽度使用多列布局,并保证页头和页脚正确显示; (2)可以指定列宽度固定,其余列宽度自适应; (3)在html中,个列可以任意顺序排列,最终效果都正确显示。 https://www.chengzhushuo.com/articlecontent.html?id=660
29.来广州看展51个超好看的“设计师+品牌商”联合展位设计!看设计优居视界 2023-12-08 16:50:14 阅读量46261 2023广州设计周 分享微信 在广州设计周的推动下,“设计+品牌”这一合作模式不单是对品牌的一种创新展示,更是对消费体验的全面革新。通过内容展现以及消费场景的搭建,间接把传统消费转变为新型内容社交消费。https://www.jia360.com/new/238287.html