当前位置:首页 > 单片机 > 单片机
[导读]由于TI 254x采用的是8位单片机,而且内存只有可怜的8k,所以与普通PC编程有一些不一样的地方,一定要注意。一、不要声明太大的数组请时刻记住,内存只有8k,你声明一个太大的数组连编译都无法通过。二、串口打印不一

由于TI 254x采用的是8位单片机,而且内存只有可怜的8k,所以与普通PC编程有一些不一样的地方,一定要注意。

一、不要声明太大的数组

请时刻记住,内存只有8k,你声明一个太大的数组连编译都无法通过。

二、串口打印不一定可信

如果你看到串口打印少了一些数据时,请不要慌张,以为是自己的程序错了。

记住:“眼见为实”这句话在这里是不适用的。

原因很简单,因为串口的速度比较慢,当输入的速度大于显示的速度,或者打印的速度大于传输的速度的时候,就会出现丢字符的情况。

有一个解决办法是将串口的波特率提高到115200,当然这也无法解决所有问题。

三、打印调试之坑2——32bit的printf

SerialPrintf(“%x , %xn", 0x12345678, 0x1111);

请问这段程序打印出来的是什么呢?

在PC上,你可以毫不犹豫的说:

12345678 1111

但是在我们神奇的8位单片机里,嘿嘿~

5678 , 1234

What? 其实思考一下能猜到大概原因:

%x最多只能打16bit的数据,所以如果你让他打一个32bit数据会溢出,其高位会占用下一个数据。

所以打印32bit数的时候请用%x%x,当然用%x%x来打印也不是完全对的,会是:

56781234 1111

但也总比上面那个好吧~

四、基本数据类型的长度——你真的很懂么?

你认为你对int、char之类的数据类型真的已经很懂了么?请记住,数据类型就像女人一样,请永远不要说你很懂^_^,请看以下程序段:

SerialPrintf("char : %d nr", sizeof(char));

SerialPrintf("short : %d nr", sizeof(short));

SerialPrintf("int : %d nr", sizeof(int));

SerialPrintf("long : %d nr", sizeof(long));

SerialPrintf("long long : %d nr", sizeof(long long));

你能猜得到他们各占多少空间么?

答案是:

char : 1

short : 2

int : 2

long : 4

long long : 4

而在一部32位的计算机上,这个结果应该是:

char : 1

short : 2

int : 4

long : 4

long long : 8

所以这里我们就能真切的感受到编程经验里的谆谆教导:

“请不要直接使用基本数据类型,除非你很确定你的程序只在一种处理器上运行”

最聪明的方法是所有的数据在定义时都采用自定义的标明字长的类型:

typedef signed char int8; //!< Signed 8 bit integer

typedef unsigned char uint8; //!< Unsigned 8 bit integer

typedef signed short int16; //!< Signed 16 bit integer

typedef unsigned short uint16; //!< Unsigned 16 bit integer

typedef signed long int32; //!< Signed 32 bit integer

typedef unsigned long uint32; //!< Unsigned 32 bit integer

typedef unsigned char bool; //!< Boolean data type

这样程序的可移植性会很好(这里不得不再感慨一下JAVA程序员好幸福,希望有一天JAVA能完全替代C。。。)


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本文中,小编将对PLC予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: PLC 编程

在下述的内容中,小编将会对PLC的相关消息予以报道,如果PLC是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: PLC 编程 模块化

-Cognizant正在筹办全球最大规模的氛围编程活动,以提升数千名员工的AI素养 为抓住人工智能经济将创造的巨大机遇,Cognizant与Lovable、Windsurf、Cursor、Gemini Code Ass...

关键字: 编程 NI AN PI

上海 2025年6月23日 /美通社/ -- 日前,以"汇聚•连接•创造"为主题的2025世界移动通信大会(MWC)上海拉开帷幕。大会期间,爱立信专家围绕"5G-A","...

关键字: 爱立信 编程 网络 AI

北京2025年3月6日 /美通社/ -- 2025世界移动通信大会(MWC25)期间,爱立信的5G可编程网络荣获"GTI年度大奖—移动技术创新突破奖"。此次获奖,标志着爱立信的5G可编程网络获得了GT...

关键字: 网络 爱立信 编程 TI

北京2025年3月4日 /美通社/ -- 日前,爱立信总裁兼首席执行官鲍毅康(Börje Ekholm)在巴塞罗那举行的2025年世界移动通信大会(MWC)上表示,移动连接将在实现人工智能(AI)和云技术能力方...

关键字: 爱立信 API AD 编程

上海2025年2月20日 /美通社/ -- 新品亮点 产品丰富:5个系列,9款产品,工作距离覆盖300~3000mm 性能出众:采集时间0.3s,不惧反光,精度最高0.03mm@300mm 应用广泛:支...

关键字: 3D视觉 相机 编程 机器人系统

防御性编程是指一种预见代码可能出现问题并提前采取措施来防止这些问题发生的编程风格。在前端开发中,这尤其重要,因为你的代码直接与用户交互,任何错误都可能导致糟糕的用户体验,甚至安全漏洞。

关键字: 代码 编程

防御性编程是一种编程策略,旨在通过考虑到各种可能的错误和异常情况,确保程序在任何情况下都能正常工作。这种方法强调在编码过程中尽可能早地发现并处理错误,以避免在运行时出现未预见的问题。

关键字: C语言 编程

在科技发展的浪潮中,编程成为了连接数字世界与现实世界的桥梁。然而,编程的力量既是双刃剑,既能创造奇迹,也可能带来灾难。本文旨在探讨如何通过最少的代码导致计算机硬件永久不可逆损坏,但更重要的是,强调这种行为的危险性和不道德...

关键字: 计算机硬件 编程
关闭