使用MSP430注意的问题

发布者:RoboPilot最新更新时间:2021-03-04 来源: eefocus关键字:MSP430  函数  工程 手机看文章 扫描二维码
随时随地手机看文章

1.#i nclude<>指要在编辑器设定目录下,#i nclude""指的是在当前工程目录下。


2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。


3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。


4.用IAR软件仿真时,可以加入变量,如果是查看I/O信息只需加入PXIN,PXOUT即可。


5.IAR在处理字符时,要注意,是字符处理结尾标志,他和其他编辑软件是不同的。比如我们长用字符处理回自动在结尾处加,但IAR有些是不加的,这就要十分注意。


6.如果只用到LFX1的低速时钟,9600bit/s传输的话,接收会出现问题,原因是误差太大,可以设置到4800以下。


7.在写FLASH时要注意其工作频率在257K~476k之间,如果不是,则会出现错误。而且FLAGH只能写入0,这样就出现了必须先擦除在写入的模式。


8.当IO口作为输入时,要根据平时的状态加电阻,平时为高时,加个上拉电阻,平时为低时加个下拉电阻以增加稳定性。


9.在FLASH写时一定要关外部中断。


10.MSP430一般是不要RC复位的,一般只要接个100K左右电阻就可以了,如果要加电容,它的大小要根据以下两个标准选择:1.下载程序不会出现下载不了;2.程序上电会能稳定复位


11.用&表达式作为判断时,不要忘记加括号。


12.不要使用中断嵌套。


同时,为了使用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容量允许,则可分配为unsigned char类型,可提高运算速度。如果分配为某字节的某个位,可以减少存储器的消耗,但是会降低运算速度


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


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


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


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


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


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


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


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


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


将变量声明为volatile类型,编译器优化时就不会移动它,对它的访问不会被延迟。


为保证对volatile的变量不被打断,为此,可以在访问它的部分(即访问它的函数)前面加上__moniter的声明


关键字:MSP430  函数  工程 引用地址:使用MSP430注意的问题

上一篇:基于Lonworks总线的嵌入式智能节点的设计
下一篇:MSP430开发注意事项

推荐阅读最新更新时间:2024-11-08 11:19

手把手带你创建HAL版本MDK工程模板
如何快速开发 STM32 项目?我们总不能每次开发一个项目就搭建一次工程,这样效率太低了。 通常我们会使用一个模板工程,需要开发新项目的时候拿出来添加一些对应的模块及业务代码,一个项目就开发完成了。 但对于新手朋友来讲,如何创建一个工程模板对他们来讲是个非常大的挑战。因为这个过程非常繁琐,虽然不复杂,但只要其中有一个环节做错了,那么就前功尽弃了,而且还不好排查。 本文将手把手带你创建 HAL 版本 MDK 工程模板,基于 STM32F103C8T6 芯片。文章参照正点原子的教程,并结合自己的工作经验写作而成,如果你能按照这个教程跟着操作,相信一定能够自己搭建一个HAL版本MDK工程模板。 1. 源码下载及前置阅读 如果大家
[单片机]
手把手带你创建HAL版本MDK<font color='red'>工程</font>模板
沈阳拓荆PECVD在中芯国际工程流片已达百万片
电子网消息,沈阳市正在一步步找准新定位,逐步提高放大自身的辐射带动作用,引领鞍山、抚顺、本溪、辽阳四市协同跟进,共同推动沈阳经济区向着辽宁经济的发动机和新引擎目标迈进。 位于沈阳市浑南区的沈阳拓荆科技有限公司,超洁净的工区内,穿戴防护装备的技术人员正在生产线上紧张忙碌。目前该公司生产的PECVD设备在中芯国际北京工程流片量已达100万片。 “沈阳的创新环境和创新资源对公司这些年的快速发展起到了关键作用。”拓荆科技相关负责人表示。 如今,越来越多像拓荆科技这样的创新型企业在沈阳发展壮大。目前,仅在浑南区,已有机器人企业46家,数字医疗、生物医药、电子商务等战略性新兴产业茁壮成长,高新技术企业达到225家,数量同比增长33.3%。
[半导体设计/制造]
MSP430】UART库函数
#include msp430x14x.h /********************************************************************* * 文件功能描述: * MSP430F16x,MSP430F14X系列单片机串口通讯函数库(简化版) * 说明: 这个程序库完成串口的初始化、发送字符和字符串、接收 * 使字符功能用方法:把Uart.c加入到项目,同时在要调用 * 此程序库的程序文件中加入包含Uart.h的语句;这样即可 * 正常使用头文件中声明的程序了;详细可参考 本工程 和 * main.c
[单片机]
MSP430 G2553 单片机流水单 左右 按键控制 仿真
D5灯是因为仿真问题,实物不会这样情况。 /* 流水灯 按键控制左右方向 */ #include msp430.h #define CPU_F ( (double) 1000000) #define delay_us( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000000.0) ) #define delay_ms( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000.0) )
[单片机]
<font color='red'>MSP430</font> G2553 单片机流水单 左右 按键控制 仿真
MSP430 Launchpad串行/并行12864显示
#include msp430g2553.h #define uint unsigned int #define uchar unsigned char /***************************************** RS--- P2.0 RW--- P2.1 E---- P2.2 PSB-- P2.3 PAUSE P2.4 RES-- P2.5 ******************************************/ #define DataPort P1OUT //MCU P2 ------ LCM /* void DelayMs(uint x) { ui
[单片机]
苹果秘密设立硬件工程部门 或为Mac开发芯片
  北京时间5月31日晚间消息,国外媒体报道, 苹果 公司(以下简称“ 苹果 ”)在俄勒冈州华盛顿县新设立一个硬件工程部门,并从英特尔等公司招聘了二十多名员工。下面就随嵌入式小编一起来了解一下相关内容吧。   报道称, 苹果 的此次招聘似乎从去年11月就开始了。该团队可能致力于自主研发ARM架构 芯片 ,从而取代Mac计算机所使用的英特尔处理器。   据招聘信息显示,应聘者需要具有“设计验证专业知识”,主要负责对成品与最初的设计规格进行对比,确保产品符合要求。   目前尚不清楚苹果将为该部门招聘多少员工,以及他们究竟将开发什么产品。据彭博社之前曾报道,苹果或在2020年发布首款基于自主设计的ARM 芯片 的Mac计算机。     
[嵌入式]
Keil C51处理可重入函数问题的探讨
  在程序设计中,变量具体可以分为四种类型:全局变量、静态全局变量、局部变量、静态局部变量。这几种变量类型对函数的可重入产生的重大的影响,因为不同的编译器采用不同的策略。   针对51的存储区有限,keil c51因此有了覆盖和共享的处理方法。   共享:共享是针对全局变量或静态变量而言的,对全局变量定义后就对其分配了内存,其他变量不会覆盖这一地址,在任何函数或者程序中都可以共享该变量的内存。   覆盖:如果一个程序不再被调用,也不由其他的程序调用,在其他的程序运行之前程序也不在运行,那么这个程序的局部变量可以放在与其他的程序完全相同的RAM空间,这就是覆盖。   所以说C51编译器并不是真正的C编译器。   先说一下keil
[单片机]
总投资20.26亿!昌图融科储能液流电池项目主体工程9月底前完成
盛夏时节在昌图经济开发区这片充满希望的热土上总投资20.26亿元的昌图融科科技有限公司储能装备制造项目正如火如荼地加速推进走进项目施工现场,塔吊林立、机器轰鸣,工程车辆来回穿梭,建设工人忙碌作业……一幅热火朝天且井然有序的画面跃入眼帘。项 ...
[新能源]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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