问题描述:arm串口实现scanf和printf函数实现输入一串十进制数字换成十六进制输出功能,但是我的板子测试就是出不来,于是乎我要彻底搞定它,随有纪。
1.首先代码分析:用sourceinsight建立一个工程:
第一个文件Ctype.h,注意不会处理EOF,即end of file。其中的宏定义定义了_U _L _D _C _P _S _X _SP,分别代表的数字标识,这个数字标识在Ctype.c中用到。extern unsigned char _ctype[]作用是把_ctype[]声明为外部的全局变量,不但包含这个头文件的多个文件可以使用,也避免了重复包含这个变量的作用。
#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) 作用是_ismask这个函数对输入的参数进行一个unsigned char转化到int类型的。
#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) 作用看名字应该是判断是是否是一个数字,不过我看了ascII表看了1 2 4 位发现没什么特别。
第二个文件Ctype.c,里面的_ctype里面存的全是八位的独热码,一共256个
第三个文件Div64.h,The semantics of do_div() are,意思是这个函数的语义是。
#ifdef __ARMEB__
#define __xh "r0"
#define __xl "r1"
#else
#define __xl "r0"
#define __xh "r1"
#endif
这段代码的意思是如果定义了arm的endbig则用32位的r0寄存器保存x的高位,同样的道理else应该清楚了。
再往下:#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"表示如果x y 不相等,则会执行.err,而后结束这个if分支。
直接看printf这个函数的实现,其中参数列表中有省略号,这是c语言中表示参数不确定的意思。
关键字:arm 串口 printf scanf函数
引用地址:
arm串口实现 printf 和scanf函数
推荐阅读最新更新时间:2024-03-16 14:50
MSP430F5529学习笔记(五)——串口|UART
我们在使用MSP430的时候大家会发现插上usb线后电脑上有两个端口标识,那么在进行串口通信时选择哪个呢。其实如图所示,上面的端口是用来进行串口通信的,下面的则是用来进行程序的下载,大家在使用的时候多加分辨即可。 当然熟悉单片机操作的人可以通过经验判断图中标注UART1的即为串口通信端口,接下来我们就进入MSP430F5529串口的学习,通过学习串口我们可以更好的进行上下位机通信,主从机交互等场景的信息交互。 串口端口配置 与使用其他功能一样我们首先对串口进行基础的配置,如果想使用电脑USB下载线进行与电脑的通信请选择P4.4,P4.5端口(UART1),如使用排针IO的串口请选择P3.4,P3.5端口(UART0),在对
[单片机]
大摩:ARM将主导500美元以下市场
北京时间3月8日晚间消息,摩根士丹利分析师弗朗科斯·穆尼尔(Francois Meunier)在一份研究报告中将ARM的股票评级从“持股观望”上调至“增持”。他认为,ARM在移动处理器市场领先英特尔(微博)2年时间,因此业绩还将继续提升。 ARM股票已被列入摩根士丹利的“最佳创意”股票名单中。穆尼尔在报告中表示:“ARM给出的长期出货量预期最初往往让人觉得过于乐观,但最终却被证明是保守的。半导体产品的价格弹性、智能手机和平板电脑等新型产品的出现,以及新兴市场对科技产品需求的上升成为过去5年中行业最主要的增长动力。如果未来5年这一创新趋势仍能够继续,那么到2016年ARM的每股收益将达到0.37英镑(约合0.58美元)。”
[手机便携]
嵌入式系统架构之ARM处理器
ARM公司于1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术智能财产(IP)核心的处理器,即我们通常所说的ARM 处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的处理器应用约占据了32位RISC微处理器 75%以上的市场,ARM技术不止逐步渗入到我们生活的各个方面,我们甚至可以说,ARM于人类的生活环境中,已经是不可或缺的一环。 目前市面上常见的ARM处理器架构,可分为ARM7、ARM9以及ARM11,新推出的Cortex系列尚在进行开发验证,市面上还未有相关产品推出。ARM也是嵌入式处理器中首先推出多核心架构的厂商。 ARM首个多核心架构为AR
[单片机]
ARM、DSP、FPGA的区别
ARM:ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软 件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前ARM在手持设备 市场占有90以上的份额,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。
DSP:DSP(digital singnal processor)是一种独特的微处理器,有自己的
[嵌入式]
ARM基础知识教程(四):ARM存储系统概述
ARM存储系统 的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。 **系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。 **通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。 **内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;
[单片机]
作为ARM Cortex-M家族的继承者 Cortex-M23与M33有哪五大特色?
集微网消息,ARM处理器在嵌入式设备领域的应用非常广泛。基于ARM Cortex处理器的片上系统(SoC)解决方案适用于多种嵌入式设计细分市场,如物联网、电机控制、医疗、汽车、家电自动化等。Cortex系列处理器主要基于3大产品类型量身开发,A系列:运行复杂系统的精细高端应用;R系列:高性能硬实时系统;M系列:低功耗、确定性、成本敏感的微控制器,专门优化以满足其需求。 其中,Cortex-M家族32位微控制器(MCU)在业内最广为人知。该家族包括超低功耗的Cortex-M0/0+、主流的Cortex-M3、带DSP浮点运算的Cortex-M4和最高性能的Cortex-M7系列。 去年11月,ARM公司又推出了Cortex-M家族的
[手机便携]
ARM发布Mali-C71图像信号处理器,推动下一代汽车图像处理
2017年4月25日,中国北京——ARM今天正式发布Mali-C71图像信号处理器(ISP),应对汽车图像处理所面临的挑战,包括在极端条件下对图像进行快速的处理和分析,符合严苛的汽车安全标准的设计要求。Mali-C71也是ARM Mali Camera系列的第一款产品。下面就随单片技校吧一起来了解一下相关内容吧。 随着技术的演进,汽车已经成为一个充满活力的创新平台,不仅正在改变驾驶者的体验,也使得真正的自动驾驶离我们越来越近。先进驾驶辅助系统(ADAS)是这一技术演进的一个不可或缺的关键。一些最新的ADAS应用,例如更先进的后视镜、驾驶员疲劳检测以及行人保护系统,都对车内图像处理提出了更高的要求。这些技术要求更多数量的车内摄像头
[单片机]
一种基于ARM和PoE的嵌入式系统的网络广播设计方案
1 系统结构 系统由音频放大器LM48510、音频处理器、以太网供电和以太网数据通信等组成。从前端到后端依次经过音频放大器LM48510→ARM926EJS→PoE/Network等几个处理过程,实现以太网供电的网络广播。系统的硬件结构如图1所示。 图1 系统硬件结构 2 系统的硬件设计 2.1 ARM926EJS相关设计 ARM926EJS处理器是通用微处理器ARM9家族的一员,属于5TEJ版ARM架构。针对的是多任务应用,全存储器管理、高性能、小核心尺寸和低功耗都是其重要的特点。ARM926EJS处理器支持32位ARM 16位Thumb指令集,使得用户能在高性能和高代码密度上取得平衡。应用ARM92
[单片机]