MSP430单片机的CPU属于RISC(精简指令集)处理器,RISC处理器基本上是为高级语言所设计的,因为精简指令系统很大程度上降低了编译器的设计难度,有利于产生高效紧凑的代码。初学者完全可以在不深入了解汇编指令系统的情况下,直接开始C语言的学习。本章介绍MSP430单片机软件工程的开发基础,主要讲解MSP430单片机C语言编程基础、MSP430单片机的软件编程方法及软件集成开发环境的基本操作。通过本章的讲解,旨在使读者对MSP430单片机的编程思想有一定的了解。
C语言基础
变量定义
单片机的RAM较小,运算速度有限,在编程时应注意通过合理的编码提高单片机的利用效率。对于小于256的正整数,定义为uint8_t,变量名可取ui8Count;如果有负数存在,可定义为int16 i16Flag。
变量名应有前缀,全局变量以"g_"开头,指针以“p"开头,结构体以”s"开头。
函数声明
调用函数之前首先要在所有函数外声明函数原型。
如果一个函数只能被本文件内的其他函数所调用,称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。
在声明函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。
程序编译
源文件分别编译,再将目标文件连接成可执行文件
$>gcc -c main.c
$>gcc -c function.c
$>gcc -o sum main.o function.o
当多人协作时,需要各自负责一部分工程,可以只是负责通信或着显示这块。这个时候,应该将自已写的这一块程序写成一个模块,单独调试,留出接口给其他模块调用,当小组成员都将自己写的模块写完并调试通过后,最后由项目组组长进行联调,这就要求程序必须模块化。
模块化程序设计需理解以下概念:
(1)模块是一个.c 文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;
(2)某模块提供给其他模块调用的外部函数及变量需在.h文件中冠以extern关键字声明;
(3)模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
(4)永远不要在.h文件中定义变量。
(5)在.h文件中使用#ifndef条件编译,防止重复声明。
软件编程方法
最简单、最常用的MSP430单片机软件流程如图所示。主监控程序首先进行系统初始化,包括初始化I/O端口、片内外设和变量等,之后进入低功耗休眠模式。当被中断唤醒后,通过查询标志位来执行相应的任务。当查询结束后,再次进入低功耗休眠模式等待被中断唤醒。中断服务程序可以置位相应标志位或执行相应任务。用户可以选择在中断唤醒MSP430单片机后在主循环中通过查询标志位处理任务,也可以选择在中断服务程序中处理任务。可以将对定时要求不严格或实时性要求不高的任务放在主循环中,通过查询标志位来完成,例如,液晶显示任务等。将对定时要求严格或实时性要求较高的任务放在中断服务程序中完成,例如, ADC采样任务、按键处理任务等。
上一篇:使用MSP430G2 LaunchPad开发板连接步进电机的方法
下一篇:使用Energia开发MSP430 LAUNCHPAD学习笔记2--串口通信
推荐阅读
史海拾趣
面对日益激烈的市场竞争,ARBOR公司始终坚持创新驱动的发展策略。公司不断加大研发投入,引进高素质的研发人才,加强与国内外科研机构的合作。通过不断创新,ARBOR公司成功推出了一系列具有自主知识产权的新产品和技术。这些创新成果不仅提升了公司的核心竞争力,也为公司的未来发展注入了新的动力。
虽然这些故事是虚构的,但它们反映了电子行业公司可能面临的挑战和机遇。通过不断的技术创新、市场拓展和合作共赢,ARBOR公司或类似的电子企业可以不断壮大并引领行业的发展。
在21世纪初,Freeport Resources作为一家历史悠久的矿业公司,开始意识到电子材料市场的巨大潜力。公司决定利用其丰富的矿产资源和勘探经验,转向对电子级金属材料的探索与开发。通过深入研究和市场调研,Freeport Resources成功定位了高纯度铜、钴等金属在半导体、电路板等电子领域的应用,并逐步建立了从矿产开采到电子材料加工的完整产业链。这一转型不仅为公司带来了新的增长点,也使其在电子行业中崭露头角。
为了满足市场需求和降低成本,东晶电子不断进行产能扩张和自动化升级。公司引进了国际先进的生产设备和技术,提高了生产效率和产品质量。同时,公司还加大了对自动化设备的投入,减少了人力成本,提高了生产效率。这些措施不仅提升了公司的竞争力,也为公司的长远发展奠定了基础。
经过破产保护和重组的洗礼后,伊士曼柯达公司更加注重创新和可持续发展。公司加强了与新兴科技公司的合作,积极探索新的业务模式和市场机会。同时,柯达还致力于研发更加环保、高效的影像产品和技术,以满足客户对高品质影像的需求。未来,伊士曼柯达公司将继续秉承创新、品质、服务的理念,不断推动影像行业的发展和进步。
在恒连电子的发展历程中,技术突破和产品创新始终是公司发展的核心动力。公司投入大量资金和资源进行技术研发,不断推出具有竞争力的新产品。其中,一款具有自主知识产权的智能芯片成为了公司的明星产品,不仅提升了产品的整体性能,还为公司带来了可观的利润。此外,恒连电子还注重产品的多元化发展,不断拓展产品线,满足市场的多样化需求。
为了提升产品质量和用户体验,DMEL Inc不断加大对生产过程的管控力度。公司引进了先进的生产设备和管理系统,建立了严格的质量检测体系。同时,DMEL Inc还加强了与供应商的合作,确保原材料的质量和供应的稳定性。这些措施的实施,使得DMEL Inc的产品质量得到了显著提升,赢得了消费者的信赖和好评。
EVC下: typedef struct { TCHAR id1[200]; TCHAR id2[200]; TCHAR id3[200]; TCHAR id4[ ...… 查看全部问答∨ |
|
我现在想用富士通的视频叠加MB90092芯片子屏显示功能,主屏可以正常显示。 子屏显示的字符为一段乱码,代码如下: void MB90092_DisChar (UCHAR x,UCHAR y,int addr,UCHAR mul,UCHAR bc,UCHAR cc,UCHAR ff) { ...… 查看全部问答∨ |
在电源设计模块中,我参考的是TI的设计电路,两块电源芯片采用的是同样的型号,外围电阻和电容值是用同样的公式计算出来的,为什么一个可以正常输出,另一个几乎没有电压输出呢?哪位大虾知道的话告诉小弟一下,不甚感激。<img src="http://www ...… 查看全部问答∨ |
是不是所有c8051f系列单片机(内部自带温度传感器),ADC在左对齐,单端方式下产生的代码与输入电压的关系都是这个方程式:CODE=Vin*(Gain/Vref)*2^16。还有输出电压与温度的关系式怎么有两个,Vtemp=2.5mV/C*Temp+0.603V和Vtemp=2.86mV/C*Temp+0. ...… 查看全部问答∨ |
【TI原创】基于LM3S8962的网络收音机(五) --- PC端发送程序 为了配合LM3S8962+VS1053的调试,从网上下载并修改了一个发送文件的程序,用来完成: 1. 网络下载存储播放; 2. 网络实时播放 为进一步实现网络收音机的功能打下结实的基础。 代码功能简单,如下所示: # ...… 查看全部问答∨ |
【请教】关于G2XX的GPIO参数,为什么讲课的内容和PPT显示的参数不一致?是故意的吗? 关于G2XX的GPIO参数,为什么讲课的内容和PPT显示的参数不一致?是故意的吗? 今天开始学习MSP430的视频介绍课程,发现PPT显示 G2XX的GPIO参数为 10-16 ,但是培训师的语音讲的是 10-24 ,是故意埋的伏笔吗? 第一讲的第一节“MSP ...… 查看全部问答∨ |
OS_CPU_SR_Save是不是只在内核中使用,看了下它的内容就是关中断 它的作用是不是为了给内核中的全局变量一个保护的作用, 在几个任务同时访问的时候达到一个互斥的效果?… 查看全部问答∨ |