如何使用C语言来编写MSP430的高质量代码

发布者:RainbowDreamer最新更新时间:2020-06-11 来源: eefocus关键字:C语言来  MSP430  高质量代码 手机看文章 扫描二维码
随时随地手机看文章

微处理器一般用于特定环境和特定用途,出于成本、功耗和体积的考虑,一般都要求尽量节省使用资源,并且,由于微处理器硬件一般都不支持有符号数、浮点数的运算,且运算位有限,因此,分配变量时必须仔细。另外要说明的是,速度和存储器的消耗经常是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容量允许,则可分配为unsignedchar类型,可提高运算速度。如果分配为某字节的某个位,可以减少存储器的消耗,但是会降低运算速度

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

11) 如果传送参数过多,可将参数组成一个数组或者结构体,然后用指针传递

 

12) 某些变量在中断程序和普通级别程序中都会被用到,所以必须加以保护。

将变量声明为volatile类型,编译器优化时就不会移动它,对它的访问不会被延迟。为保证对volatile的变量不被打断,为此,可以在访问它的部分(即访问它的函数)前面加上__moniter的声明

关键字:C语言来  MSP430  高质量代码 引用地址:如何使用C语言来编写MSP430的高质量代码

上一篇:MSP430应用技巧6:代码速度的优化
下一篇:使用MSP430实现温控(一)

推荐阅读最新更新时间:2024-11-10 09:36

MSP430 大型数组 上电不启动
现象:程序烧录板子后,单片机不启动,卡死。注释掉部分字节数组后,才能运行。 分析: 这是IAR编译的方法,导致看门狗溢出了。MSP430单片机一上电看门狗就已经启动,但是在进入main()函数之前,软件会先初始化用到的一些数据,比如数组。如果数定义的比较大,初始化时间比较长,那就有可能导致看门狗溢出了,单片机复位,然后重启,再初始化,再溢出,再复位..程序永远也进不去主函数。 解决方法: 使用低级初始化函数:int __low_level_init(void) 。该函数会自动把低级初始化函数放在程序的最开始处,在此可以关闭看门狗,等低级初始化函数执行完之后,才会进行数据初始化,最后再进入main()函数。 void
[单片机]
快速入门msp430fr6989之lcd功能篇
【注】德州仪器的官网上的msp430fr6989单片机上有一块lcd,其有40个引脚,分别两边各有20个引脚排布。学过stm32的能很快掌握lcd的寄存器模式下写成的代码,但是新手最好入门库函数一类,如果时间很紧迫的情况下。板上是0-7的行,分为上半屏和下半屏。列有LCDM1-LCDM20,总共有8*20=160个segment。在前面的帖子中,对引脚的定义是通过寄存器进行定义的,而如果我要让流水灯亮起来就可以把寄存器及地址写在一个函数内,包装起来,直接在官网上找的代码,很丰富,学这个很快。比如以下: p //定义输出引脚 void GPIO_setAsOutputPin(uint8_t selectedPort,
[单片机]
快速入门<font color='red'>msp430</font>fr6989之lcd功能篇
基于MSP430的高功率因数电源设计方案
  摘要: 基于有效提高电力资源利用率、减小谐波污染、提高电网输电效率和电质量的目的,设计了一款基于低功耗单片机MSP430 的高功率因数电源。本系统以单片机MSP430 为控制和运算核心,测量出系统的功率因数。采用非隔离式Boost 电路作为主回路,采用PFC 功率因数校正专用控制芯片UCC28019 进行闭环反馈控制,将功率因数补偿到0.999 以上,本系统具有一定的实用性。   在电力网的运行中,功率因数反映了电源输出的视在功率被有效利用的程度,我们希望的是功率因数越大越好。这样电路中的无功功率可以降到最小,视在功率将大部分转换为有功功率,从而提高电能输送的效率。提高功率因数必须从相位校正技术和谐波消除技术两个方面考虑,
[单片机]
基于<font color='red'>MSP430</font>的高功率因数电源设计方案
德州仪器通过集成的智能模拟拓展其工业级微控制器产品组合MSP430i204x
德州仪器(TI)宣布推出集成了智能模拟的全新系列MSP430工业级微控制器(MCU),以实现高准确度、高精密度并节约成本。MSP430i204x MCU可满足工业和智能电网应用所需的-40℃至+105℃宽泛温度范围要求。全新MSP430 i系列MCU非常适用于占位传感器、远程温度与压力变送器、电源监控等各种成本敏感型工业领域。   全新MSP430i204x工业级MCU具有集成的智能模拟设置,包括多达四个集成式Σ-Δ模数转换器(ADC),这些转换器所提供的准确度可在2000:1的动态范围内将智能型计量产品的误差降低至0.5%。MSP430i204x MCU也包括无需外部晶体的内部数控振荡器(DCO)。此外,小型封装尺寸还能
[单片机]
基于MSP430F2012和IA4420的主动式RFID标签设计
概述   射频识别(RFID)是近年来成长最快的无线技术之一,它将条形码及无线技术的优势带入资产管理、产品跟踪、海运及运输识别、库存控制和定位检测中。大多数RFID系统采用通过RF从阅读器获取电源的被动式标签。这样有利于减小标签尺寸和降低成本,但是会限制读取范围和数据存储能力。带电池的主动式标签可以提供较大范围的读取能力和更强的可靠性,不过其尺寸较大,也更贵一些。采用最新的低功耗单片机和无线数传芯片,设计一种不仅读取距离远、可靠度高,而且成本更低、寿命更长的主动式RFID标签是本设计研究的目的。   设计方案分析   本设计完成的主动式RFID应具有:低成本、低功耗、阅读距离长及距离可调、电池供电等特性。分析主动式RFID的
[单片机]
基于<font color='red'>MSP430</font>F2012和IA4420的主动式RFID标签设计
MSP430F169中关于RS485通讯的问题
1、大体框架:实现单片机和PC机之间的通讯。 PC机(USB接口)发送字符,经过USB 转RS232,再经过RS232转RS485,到单片机(RS485 接口)接收字符。 2、程序设计如下: 分步调试的过程中,无论发送什么样的字符,RXBUF1变量始终是0X01。求指导!!! /*********************************************** 程序功能:通过RS485端口接收传感器的数据,然后通过RS232把数据传出到显示屏 ------------------------------------------------ 测试说明:首先查看RS485接收到的数据,然后用串口调试工具,查看发出的数
[单片机]
MSP430G2553 串口通信
代码功能:TI官方例程 :PC机向单片机发送字符 然后单片机回发到PC机 就是这么一个简单的代码 我居然。。。。。。。。。。。。。。。。。。。。。。。。。。。。下面逐一的解释一下每一条语句的功能 附上代码: //************************************************************************* // MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK // // Description: Echo a received character, RX ISR used. Normal mode is L
[单片机]
基于MSP430和Zigbee的无线抄表终端设计
1 引言   随着客户数量的增多,特别是一户一表的推广,供电部门抄录客户用电数据的工作量成倍增加。传统的手工抄表不但费时、费力,准确性和及时性得不到可靠的保证,而且存在安全隐患、管理费用过高等缺点, 已不适应现代电力企业管理的需要。近年来提出了多种远程自动抄表方式,但是远程抄表系统对通信技术的数据可靠性要求很高,对功耗的要求也很苛刻,各种远程抄表方式受技术或成本制约,推广速度缓慢。本文给出了一种基于MSP430F149和Zigbee技术的无线自动抄表终端, 通信质量好、工作可靠、经济实用, 可以准确及时地将用户电能表数据抄取上传, 是一种理想的自动抄表解决方案。   在诸多的无线方案中,我们选用了近几年来一种新兴的无线传输
[单片机]
基于<font color='red'>MSP430</font>和Zigbee的无线抄表终端设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved