历史上的今天

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

正在发生

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

发布者:chaxue1987 来源: eefocus关键字:MSP430系列  嵌入式  基础 手机看文章 扫描二维码
随时随地手机看文章

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

软件流程图

关键字:MSP430系列  嵌入式  基础 引用地址:MSP430系列嵌入式实验教程---基础

上一篇:使用MSP430G2 LaunchPad开发板连接步进电机的方法
下一篇:使用Energia开发MSP430 LAUNCHPAD学习笔记2--串口通信

推荐阅读

北京10月22日电(孟竹)今天,“2018北京微电子国际研讨会暨IC WORLD大会”(以下简称世界集成电路大会)在北京经济技术开发区拉开帷幕。记者了解到,这是北京微电子国际研讨会19年来首次“扩容”,在业界大咖云集的学术会议之外,增设博览会, 200多家集成电路产业上下游企业参展。本届大会以“技术创新引领,产业链协同发展”为主题,旨在推动京津冀为...
stm32f103之串口实验,串口相互通讯即用同一个单片机的串口1与串口3相互通讯串口1,串口3都接到电脑上,选上”Use MicroLIB”这是KEIL自带的一个简易的库,例如你用printf函数的时候,就会从串口1 输出字符串,直接默认定向到串口1。(此程序中两个波特率不匹配,接受会出错,在实践中要设置串口一致的波特率)以下是程序#ifndef __USART_H//头文件 #defin...
随着世界上人口增多和道路上行驶的车辆增多,交通安全的改善还不能很快实现。尽管自2000年以来死亡率已降低了一半以上,从每100,000辆车辆中的135例降低到64例,但死亡总数仍在继续攀升。今天,有94%的事故归因于驾驶员的行为。现在的汽车比以往任何时候都更安全。安全气囊、强制安全带以及车辆结构和功能设计的改进让驾驶员和乘客更有可能从撞车事故中...
据路透社报道,美国商务部周四表示,英特尔和英飞凌等公司已表示将配合提供芯片短缺数据,但商务部可能会根据提交的数量和质量来决定最后是否采取强制措施。美国商务部发言人称,包括英特尔、通用汽车(GM)、英飞凌和SK海力士(SK Hynix)等公司已经表态非常乐于提供数据。我们非常感谢他们的配合,并鼓励其他公司跟进。该发言人补充,(提供数据)虽是...

史海拾趣

问答坊 | AI 解惑

截图软件

找到一个很好的截图软件 分享一下…

查看全部问答∨

EVC下写文件 vc下读出现错误

EVC下: typedef struct {          TCHAR id1[200];      TCHAR id2[200];          TCHAR id3[200];          TCHAR id4[ ...…

查看全部问答∨

关于MB90092 子屏显示的问题

我现在想用富士通的视频叠加MB90092芯片子屏显示功能,主屏可以正常显示。 子屏显示的字符为一段乱码,代码如下: void  MB90092_DisChar (UCHAR x,UCHAR y,int addr,UCHAR mul,UCHAR bc,UCHAR cc,UCHAR ff) {       ...…

查看全部问答∨

为什么我设计的电源输出电压几乎为0呢?

在电源设计模块中,我参考的是TI的设计电路,两块电源芯片采用的是同样的型号,外围电阻和电容值是用同样的公式计算出来的,为什么一个可以正常输出,另一个几乎没有电压输出呢?哪位大虾知道的话告诉小弟一下,不甚感激。<img src="http://www ...…

查看全部问答∨

关于c8051F330单片机内部温度传感器的问题

是不是所有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的作用

OS_CPU_SR_Save是不是只在内核中使用,看了下它的内容就是关中断 它的作用是不是为了给内核中的全局变量一个保护的作用, 在几个任务同时访问的时候达到一个互斥的效果?…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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