历史上的今天
返回首页

历史上的今天

今天是:2024年10月23日(星期三)

正在发生

2019年10月23日 | MSP430系列嵌入式实验教程---基础

2019-10-23 来源:eefocus

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采样任务、按键处理任务等。

软件流程图

推荐阅读

史海拾趣

问答坊 | AI 解惑

美国电网

请问美国家用电网的电压大小是多少,频率是多少?…

查看全部问答>

模块推广应用—DIY综合型防盗报警控制器

模块推广应用—DIY综合型防盗报警控制器…

查看全部问答>

英特尔调转船头:由处理器驶向SoC(一)

全球最大的半导体厂商大举挺进AV产品等主处理器市场。美国英特尔已制定了面向电视、蓝光录像机、机顶盒(STB)等台式AV产品以及路由器等网络设备等各种用途,正式开展SoC(system on a chip)☆业务的方针。 ☆SoC(system on a chip):集成有计 ...…

查看全部问答>

我是人才,探索科学真理,研发!

每次找工作遇到挫折了,我都会在心里慢慢安慰自己“我是人才,我一定会找到一份我适合我的工作的”。      一转眼,一个月过去,我本以为我来深圳之后,在我会很快的进入一家大企业,比如:中兴,华为了。可是现在才知道,当时 ...…

查看全部问答>

三相无刷无传感器直流电机检测仪

三相无刷无传感器直流电机检测仪是飞盈佳乐最新一代的专门针对三相无刷无霍尔传感器直流电机的检测仪器。该产品驱动能力强,功率大,测试速度快,测量范围大,具自动断电保护,可以在线及时显示电机运行时各项参数,是无传感无刷电机的性能测试的好产 ...…

查看全部问答>

2440 加入一个串口驱动导致启动不了,大伙帮忙看看。

按照http://www.hzlitai.com.cn/bbs/viewthread.php?tid=11487&pid=67161&page=1&extra=#pid67161 提示加入,没有想到在系统启动的时候不停的打印 EvaluateEventFlag (eventMask = 0x80) - device was closed EvaluateEventFlag (eventMask ...…

查看全部问答>

采用S3C2410开发板,实现基于linux的数据采集软件!!

S3C2410中,利用GPIO口获取FPGA传来的数据进行数据处理,利用QT库完成软件的界面设计。。小妹我刚接触嵌入式的开发。。请求各位高人指点下。软件的模块之类的!!不胜感激。。…

查看全部问答>

如何解决TFTLCD与外扩Flash的矛盾

STM32高密度型器件是可以与TFT LCD相连的,其中占用了FSMC一些控制线(如NEx,NOE等),现在要做的项目是一个触屏手持设备,需要做界面,含有图片较多(以数组形式存放的话,一幅256色图片,320*240的话,一个点一字节,那一幅图需70K左右空间 ...…

查看全部问答>

RS232问题:三个430的txd和一个430的rxd相连

txd端不会同时发送数据,请问有简单的方法吗? 就是只有发送,没有返回…

查看全部问答>

最后问下防倒灌除了二极管还有么有其他好方法啊?

本帖最后由 paulhyde 于 2014-9-15 03:51 编辑 rt。除了二极管有什么低消耗的电路么?  …

查看全部问答>