历史上的今天
返回首页

历史上的今天

今天是:2025年04月04日(星期五)

2020年04月04日 | MSP430的C语言编写注意事项

2020-04-04 来源:eefocus

==============================================================================================================================

微处理器一般用于特定环境和特定用途,出于成本、功耗和体积的考虑,一般都要求尽量节省使用资源,并且,由于微处理器硬件一般都不支持有符号数、浮点数的运算,且运算位有限,因此,分配变量时必须仔细。另外要说明的是,速度和存储器的消耗经常是2个不可兼顾的目标,在多数情况下,编程者必须根据实际情况作出权衡和取舍。 需要注意的事项如下: 

1) 通常在满足运算需求的前提下,尽量选择为变量定义字节少的数据类型。 比如最常用的 int和 char, int是 16 位的, char 是8位的,如果没有必要,不要使用 int,而且使用 char 也最好使用 unsigned char。运行时,可以在变量窗口看到,使用类型为unsigned char 的变量是 16 进制的格式,而使用 int 的是十进制格式,如果 char 没有定义为 unsigned,会出现负号,如果没有必要的话,在 430 中是不需要负数的。 

2) 尽量不用过长的数据类型,如 long、long long和 double .


3) MSP430的 C编译器不支持位寻址,所以运算中尽量减少位操作,对于只有“是”和“否”的变量,如果RAM 容量允许,则可分配为 unsigned char类型,可提高运算速度。如果分配为某字节的某个位,可以减少存储器的消耗,但是会降低运算速度 .


4) 避免使用浮点数,尽量使用定点数进行小数运算。如果必须使用浮点数,则尽量用 32 位的 float,而不是 64位的 double .


5) 尽量将变量分配为无符号数据类型


6) 对于指针变量,如果声明后其值不再改变,则声明为 const 类型,这样编译器编译时能更好的优化生成的代码

7) 尽可能的使用局部变量而非全局变量或者静态变量(static) 。这样有利于编译器编译时更好的优化生成的代码


8) 避免对局部变量使用 &取地址符。因为这样会使编译器无法把此变量放在 CPU的寄存器中,而是放在RAM中,从而失去了优化的机会


9) 仅在模块内使用的变量声明为 static,有利于优化代码


10) 如果堆栈空间有限,尽量减少函数调用的层次和递归调用

================================================

推荐阅读

史海拾趣

Atlantic Microwave Ltd公司的发展小趣事

随着国内市场的饱和,Atlantic Microwave Ltd公司开始将目光投向了更广阔的国际市场。公司组织了一支专业的国际营销团队,深入调研不同国家和地区的市场需求和文化习惯,制定了针对性的市场推广策略。同时,公司还积极参与国际电子展会和技术交流活动,展示公司的最新产品和技术实力,成功打开了多个国际市场的大门。

Apx-Crystal公司的发展小趣事

作为一家有社会责任感的企业,Apx-Crystal公司始终将可持续发展作为企业的核心价值观之一。公司积极履行社会责任,关注环境保护和公益事业。在生产过程中,公司采用环保材料和节能技术,降低能耗和排放;在员工福利方面,公司注重员工培训和职业发展,为员工提供良好的工作环境和福利待遇;在社会公益方面,公司积极参与捐资助学、扶贫济困等公益活动,回馈社会。这些举措不仅提升了企业的社会形象,也为公司的长期发展奠定了坚实的基础。

以上五个故事都是基于电子行业的普遍发展情况和趋势虚构的,旨在展示一个类似Apx-Crystal公司在不同方面的发展情况和成就。请注意,这些故事并非基于真实事件或数据,因此可能与实际情况存在差异。

益升华(Essentra)公司的发展小趣事

随着公司业务的不断发展,益升华(Essentra)公司意识到海外市场的重要性。于是,公司开始积极拓展海外市场,通过设立海外分公司、与当地企业合作等方式,将产品推向全球。在拓展海外市场的过程中,益升华(Essentra)公司始终坚持品质第一的原则,赢得了海外客户的信赖和好评。如今,公司的工业零部件全球网络已覆盖23个国家或地区,成为国际知名的塑料及金属零部件生产商和销售商。

AC Interface Inc公司的发展小趣事

ABC Electronics Inc. 起初是一家小型电子元件供应商,专注于为本地市场提供基本的电子零部件。然而,随着技术的快速发展,公司创始人意识到,只有不断创新才能在竞争激烈的市场中立足。于是,ABC Electronics 开始投入大量资源研发具有竞争力的新产品。经过数年的努力,公司成功推出了一款具有高效能、低能耗特点的电源管理芯片,迅速获得了市场的认可。这一创新产品不仅为公司带来了可观的利润,也奠定了其在电子行业的技术领先地位。

BENCENT公司的发展小趣事

BENCENT公司在成立之初,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。创始人带领团队夜以继日地研发,通过不断尝试和改进,终于成功开发出了一款具有竞争力的电子产品。这款产品凭借其高性能和创新性,在市场上获得了初步认可,为公司的后续发展奠定了基础。

APSA公司的发展小趣事

随着全球电子市场的不断扩大,APSA公司开始实施全球化战略。公司先后在多个国家设立分支机构,拓展国际业务。通过与全球客户的合作,公司的产品线不断丰富,市场份额也逐渐提升。

问答坊 | AI 解惑

转载:“60年后的电梯”创意设计大赛作品欣赏

本帖最后由 paulhyde 于 2014-9-15 09:10 编辑 由快速电梯和视觉同盟共同举办的“60年后的电梯”创意设计大赛正在如火如荼进行中,许多参赛的作品都非常能够表现出节能、环保和未来的理念。以下是精彩参赛作品欣赏,分享给大家: 作品名称: ...…

查看全部问答>

开关电源原理与设计(连载31)推挽式开关电源变压器参数的计算

0.4.推挽式开关电源变压器参数的计算 推挽式开关电源使用的开关变压器有两个初级线圈,它们都属于励磁线圈,但流过两个线圈的电流所产生的磁力线方向正好相反,因此,推挽式开关电源变压器属于双激式开关电源变压器;另外,推挽式开关电源变压器 ...…

查看全部问答>

LPC1114函数的命名规则!!!!

In function \'LoadDATA\':../src/aa.c:95: error: number of arguments doesn\'t match prototype       出现的啦上面提示的错误 !!!!!   经过分析 大家主要你的函数的名字要 不要超过13个字母或数字  void A ...…

查看全部问答>

plc控制系统的7个步骤

1. 系统设计与设备选型    a. 分析你所控制的设备或系统。PLC最主要的目的是控制外部系统。这个系统可能是单个机器,机群或一个生产过程。    b. 判断一下你所要控制的设备或系统的输入输出点数是否符合可编程控制器的点数要求。(选型要求) ...…

查看全部问答>

触摸平不行,但鼠标可以?????

我用QT4做的界面在触摸平上,但是触摸不行,只能用鼠标,怎么办???…

查看全部问答>

apue 11-4中pthread_cleanup_push函数是如何清理的?

我在运行apue11-4的程序中运行通了,但是对函数不大理解,程序清单如下: #include \"apue.h\" #include void cleanup(void *arg) {         printf(\"cleanup:%s\\n\",(char *)arg); } void thr_fn1(void *arg) { & ...…

查看全部问答>

WINCE下,已给窗口句柄,获取应用程序的主窗口的小图标。

用了不少方法都不行 ExtractIcon编译不通过 GetClassLong失败 SendMessage(hwnd,WM_GETICON,(WPARAM)ICON_SMALL,0);   也是失败 用了这个帖子最后回复中的方法http://topic.eeworld.net/t/20061030/15/5119437.html 还是不行,该帖l ...…

查看全部问答>

AT+CPBF指令参数

AT指令+CPBF查找电话本记录,对于查找汉字有点不明白 比如说电话本内有条记录是+CPBR: 2,\"13519154544\",129,\"5F207389\" 如果我想找到这条记录应该怎么写CPBF的参数呢 用超级终端测试的时候用AT+CPBF=\"5F20\"查找,如果AT+CSCS=\"GSM”,返 ...…

查看全部问答>

调试以太网的时候需要用到什么软件来观察收发数据呢?

                                 请问调试以太网的时候需要用到什么软件来观察收发数据呢?…

查看全部问答>