以MSP430说明FreeRTOS移植

以MSP430说明FreeRTOS移植
以MSP430说明FreeRTOS移植

MSP430RTOS移植函数说明文档

通过MSP430的官网移植函数用来说明在移植时需要实现的函数和原因

FreeRTOS移植需要实现的代码

1,pxPortInitialiseStack()

会在任务创建时调用此函数

参数:

pxTopOfStack:任务私有栈栈顶地址

pxCode:任务指针

pvParameters:传给任务的参数指针

私有栈用来保存任务的状态寄存器,指令指针,通用寄存器,任务内部需要用栈的数据

不同的处理器栈初始化顺序结构不同,但本质是一样的

StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )

{

/*

Place a few bytes of known values on the bottom of the stack.

This is just useful for debugging and can be included if required.

MSP430特有

*pxTopOfStack = ( StackType_t ) 0x1111;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x2222;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x3333;

pxTopOfStack--;

*/

/* The msp430 automatically pushes the PC then SR onto the stack before

executing an ISR. We want the stack to look just as if this has happened

so place a pointer to the start of the task on the stack first - followed

by the flags we want the task to use when it starts up. */

在初始化私有栈时,会假设任务已经开始运行了,

FreeRTOS基于时间片的任务调度,所以在任务切换时,会进入定时器中断,然后进行任务切换,不同的处理器中断发生时会执行不同的寄存器入栈操作,MSP430会保存PC和SR寄存器,所以在栈顶两个空间用来保存指令指令,SR寄存器,初始化就是函数指针和一个任意数

*pxTopOfStack = ( StackType_t ) pxCode;

pxTopOfStack--;

*pxTopOfStack = portFLAGS_INT_ENABLED;

pxTopOfStack--;

/* Next the general purpose registers.

通用寄存器入栈,根据内核说明入栈

*/

*pxTopOfStack = ( StackType_t ) 0x4444;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x5555;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x6666;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x7777;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x8888;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0x9999;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0xaaaa;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0xbbbb;

pxTopOfStack--;

/* When the task starts is will expect to find the function parameter in

R15.

任务参数,不同编译器使用不同的通用寄存器用来传递参数,参看编译器说明是使用哪一个寄存器

*/

*pxTopOfStack = ( StackType_t ) pvParameters;

pxTopOfStack--;

通用寄存器

*pxTopOfStack = ( StackType_t ) 0xdddd;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0xeeee;

pxTopOfStack--;

*pxTopOfStack = ( StackType_t ) 0xffff;

pxTopOfStack--;

/* A variable is used to keep track of the critical section nesting.

This variable has to be stored as part of the task context and is

initially set to zero.

临界嵌套数

*/

*pxTopOfStack = ( StackType_t ) portNO_CRITICAL_SECTION_NESTING;

/* Return a pointer to the top of the stack we have generated so this can

be stored in the task control block for the task.

返回堆栈,之后的地址用于任务内部栈

*/

return pxTopOfStack;

}

2,void vPortSetupTimerInterrupt( void )

初始化硬件定时器作为系统滴答时钟

3,定时器中断例程

vTickISR:

保存当前任务私有栈

portSAVE_CONTEXT

调用系统滴答时钟处理函数,函数会返回一个BOOL类型数据,当为0时不进行任务切换,为1时进行任务切换

call #xTaskIncrementTick

cmp.w #0x0, R12

jeq SkipContextSwitch

call #vTaskSwitchContext

SkipContextSwitch:

如果不进行任务切换,重新装载任务栈

portRESTORE_CONTEXT

4,vPortYield(),手动实现任务切换

/*

* Manual context switch called by the portYIELD() macro.

*/

vPortYield:

/* Mimic an interrupt by pushing the SR.

手动切换任务,不会自动保存PC和SR值,需要手动入栈,调用函数vPortYield时PC 指令已经入栈了,所以不需要再手动将PC入栈

*/

push S R

/* Now the SR is stacked we can disable interrupts.

关中断

*/

dint

/* Save the context of the current task. */

portSAVE_CONTEXT

/* Switch to the highest priority task that is ready to run. */

call #vTaskSwitchContext

/* Restore the context of the new task. */

portRESTORE_CONTEXT

/*-----------------------------------------------------------*/

5,启动调度器xPortStartScheduler()

* Start off the scheduler by initialising the RTOS tick timer, then restoring * the context of the first task.

*/

xPortStartScheduler:

/* Setup the hardware to generate the tick. Interrupts are disabled when this function is called.

*/

调用定时器初始化函数,使能滴答时钟

call #vPortSetupTimerInterrupt

/* Restore the context of the first task that is going to run.

装载任务栈启动第一个任务

*/

portRESTORE_CONTEXT

/*-----------------------------------------------------------*/

4,保存和装载上下文

portSAVE_CONTEXT macro

IMPORT pxCurrentTCB

IMPORT usCriticalNesting

/* Save the remaining registers. */

push r4

push r5

push r6

push r7

push r8

push r9

push r10

push r11

push r12

push r13

push r14

push r15

mov.w &usCriticalNesting, r14

push r14

mov.w &pxCurrentTCB, r12

mov.w r1, 0(r12) 当前栈顶保存到私有栈

endm

/*-----------------------------------------------------------*/

portRESTORE_CONTEXT macro

mov.w &pxCurrentTCB, r12

mov.w @r12, r1 //R1作为堆栈寄存器使用,这条指令时将堆栈切换至当前任务的私有栈

pop r15

mov.w r15, &usCriticalNesting

pop r15

pop r14

pop r13

pop r12

pop r11

pop r10

pop r9

pop r8

pop r7

pop r6

pop r5

pop r4

/* The last thing on the stack will be the status register.

Ensure the power down bits are clear ready for the next

time this power down register is popped from the stack. */

bic.w #0xf0,0(SP)

reti 中断返回指令,会执行中断POP指令

endm

/*-----------------------------------------------------------*/

以上就是移植需要实现的所有函数

现在来看一看系统在启动时是如何实现第一个任务启动的并实现任务切换的

首先调用xPortStartScheduler()函数启动调度器。

函数初始化了滴答时钟,并调用portRESTORE_CONTEXT切换到第一个任务。

注意此时的堆栈还是系统堆栈,要实现任务切换就需要将指令指针指向任务,

之后执行的pop指令就是将任务私有栈中的数据装载到通用寄存器中,SR和PC的出栈操作会在调用RETI指令时实现,所以RETI后CPU进入第一个任务空间中运行,任务切换就通过定时器中断函数实现

以上可以看出系统任务切换就是任务之间的的状态寄存器,指令指针,通用寄存器切换的过程,移植要做的工作就是针对所使用的处理器,实现就寄存器保护、转载的过程,系统是通过定时器中断来实现任务切换的,所以需要一个定时器,并在定时器中断例程中实现上下文保护,任务切换,上下文装载。

红头文件工资证明格式

红头文件工资证明格式文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

××××××××××××公司 ××字【20××】×号 下面几种证明格式、挑选适合自己的、直接填好打印出来、让财务盖章即可! 员工工作及收入证明 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:年月日 ==================================================================

工资收入证明 ________________: 兹证明________是我公司员工,在________部门任________职务。至今为止,一年以来总收入约为__________元。特此证明。 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:______年___月___日 ================================================================== 工资收入证明

兹证明___是我单位员工,身份证号码:___________,在我单位工作___年,岗位为____,年收入__万元(人民币)。 本证明仅限于该职工办理____信用卡使用,我公司不对该职工使用信用卡可能造成的一切后果承担任何责任。 特此证明 单位名称(盖章):_____ 日期:___年__月__日 公文排版样式 文头的字体:一号黑体字、加粗、红色、居中、字符间距为1.7磅 发文字号的字体:四号仿宋体、黑色 标题的字体:三号黑体字、加粗、黑色、居中 主送机关的字体:四号仿宋体、黑色 正文的字体:四号仿宋体、黑色、首行缩进2个字符、1.5倍行距

MSP430单片机最小系统

第八章MSP430F249单片机最小系统 8.1 MSP430单片机下载方式 当单片机程序利用IAR开发环境编译和proteus仿真通过以后,还需要把程序生成的二进制代码烧录进单片机内部闪存中运行,这个过程称为下载或者编程。MSP430单片机支持多种FLASH编程方法:BSL和JTAG。其中BSL是启动加载程序(BootStrap Loader)的简称,该方法允许用户通过标准的RS-232串口访问MSP430单片机的FLASH和RAM。在单片机的地址为(0C00H-1000H)的ROM区内存放了一段引导程序,给单片机的特定引脚加上一段特定的时序脉冲,就可以进入这段程序,让用户读写、擦除FLASH程序。通过BSL无条件擦除单片机闪存,重新下载程序,还可以通过密码读出程序。 另外一种下载程序的方式为JTAG(Joint Test Action Group ,联合测试行动小组),JTAG是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port,测试访问口),通过专用的JTAG 测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持JTAG 协议,如ARM 、DSP 、FPGA 器件等。标准的JTAG 接口是4 线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。目前JTAG 接口的连接有两种标准,即14 针接口和20 针接口,MSP430单片机使用的是14针的接口,其定义分别如表8-1所示。 表8-1 14针JTAG接口定义引脚名称描述 管脚编号功能说明 2 、4 VCC 电源 9 G ND 接地 11 nTRST 系统复位信号 3 TDI 数据串行输入 7 TMS 测试模式选 9 TCK 测试时钟 1 TDO 测试数据串行 输 6、8、10、12 NC 未连接 下面分别介绍BSL和JTAG方式下编程器设计,可以用在实际系统编程中。 8.2 BSL编程器原理 启动程序载入器(BootStrap)是一种编程方法,允许通过串行连接和MSP430通讯,在Flash Memory 被完全擦除时也能正常工作。MSP430的启动程序载入器(Bootstrap)在单片机正常复位时不会自动启动,当需要对单片机下载程序代码时候,对RST/NMI和TEST引脚设置特殊的顺序。当MSP430单片机的TEST 引脚为低电平而RST/NMI引脚有上升沿时,用户程序从位于内存地址0FFFEh 复位向量开始执行,用户程序正常启动,如图8-1所示

MSP430单片机题目答案整理(大部分)

第一章 1. MCU(微控制器单元)与MPU(微处理器单元)的区别 MCU集成了片上外围器件,而MPU不带外围器件,是高度集成的通用结构的处理器。是去除了集成外设的MCU。 2. MSC430单片机的不同系列的差别 MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显着优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。 3. MSC430单片机主要特点 1.超低功耗 2. 强大的处理能力 3. 高性能模拟技术及丰富的片上外围模块 4. 系统工作稳定 5. 方便高效的开发环境 4. MSC430单片机选型依据 选择最容易实现设计目标且性能价格比高的机型。 在研制任务重,时间紧的情况下,首先选择熟悉的机型。 欲选的机型在市场上要有稳定充足的货源。 第二章 1. 从计算机存储器体系结构上看,MSP430单片机属于什么结构 冯·诺依曼结构,是一种程序存储器和数据存储器合并在一起的存储器体系结构。 2. RISC与CISC体系结构的主要特征是什么MSP430单片机属于哪种结构 CISC----是复杂指令系统计算机Complex Instruction Set Computer的缩写,MCS-51单片机属于CISC。具有8位数据总线、7种寻址模式,111条指令。 RISC----是精简指令系统计算机Reduced Instruction Set Computer的缩写,MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令。 3. 对MSP430单片机的内存访问时,可以有哪几种方式读写字数据有什么具体要求 字,字节,常字。字访问地址必须是偶数地址单元。 4. MSP430单片机的中断向量表位于什么位置其中存放的是什么内容 中断向量表:存放中断向量的存储空间。430单片机中断向量表地址空间:32字节,映射到存储器空间的最高端区域 5. MSP430单片机的指令系统物理指令和仿真指令各有多少条。 27种物理指令-内核指令和24种仿真指令 6. MSP430单片机的指令系统有哪些寻址方式各举一例说明。 有7种寻址方式:寄存器寻址,变址寻址,符号寻址,绝对寻址, 间接寻址,间接增量寻址,立即数寻址 7. MSP430单片机的CPU中有多少个寄存器其中专用寄存器有哪几个 4个专用寄存器(R0、R1、R2、R3)和12个通用寄存器(R4~R15) R0:程序计数器(PC) R1:堆栈指针(SP)—总是指向当前栈顶 R2:状态寄存器(SR)只用到16位中的低9位 R2/R3:常数发生器(CG1/CG2) 8. 按要求写出指令或指令序列。 9. 写出给定指令或指令序列的执行结果。 10.汇编语言程序的分析与理解。

MSP430g2553原理图

MSP-EXP430G2LaunchPad Evaluation Kit User's Guide Literature Number:SLAU318E July2010–Revised March2014

Contents 1MSP-EXP430G2LaunchPad Overview (4) 1.1Overview (4) 1.2Features (5) 1.3Kit Contents (5) 1.4Revisions (6) 2Installation (6) 2.1Download the Required Software (6) 2.2Install the Software (6) 2.3Install the Hardware (6) 3Getting Started With MSP-EXP430G2LaunchPad (7) 3.1Getting Started (7) 3.2Demo Application,Internal Temperature Measurement (7) 4Develop an Application With the MSP-EXP430G2LaunchPad (8) 4.1Developing an Application (8) 4.2Program and Debug the Temperature Measurement Demo Application (8) 4.3Disconnect Emulator From Target With Jumper J3 (9) 4.4Program Connected eZ430Target Boards (10) 4.5Connecting a Crystal Oscillator (10) 4.6Connecting a BoosterPack (11) 4.7Supported Devices (11) 4.8MSP-EXP430G2On-Board Emulator (13) 5MSP-EXP430G2Hardware (13) 5.1Device Pinout (13) 5.2Schematics (14) 5.3PCB Layout (20) 5.4Bill of Materials(BOM) (23) 6Suggested Reading (24) 7Frequently Asked Questions(FAQ) (24) Revision History (26) 2Table of Contents SLAU318E–July2010–Revised March2014 Submit Documentation Feedback Copyright?2010–2014,Texas Instruments Incorporated

IAR中MSP430的头文件解析,你看看

1、#define BIT0 (0×0001) //(0×0001)不是地址,而是一个16进制数值。 例1、P3DIR |= BIT3;实际上也可以写成P3DIR |= 0×0008; 意思是将P3口的默认上电值0×0000和0×0008相与,设置P3口的第三位(即P3.3)管脚作输出使用。 例2、WDTCTL = WDTPW + WDTHOLD;实际上就是WDTCTL=0×5A80; 你可以在头文件中查到#define WDTPW (0×5A00)和#define WDTHOLD (0×0080)。WDTCTL是看门狗的控 制寄存器,在msp430的User’Guide中有说明:当它的值为0×5A80时停止看门狗定时。 那为什么我们不直接写成WDTCTL=0×5A80;呢?这样的话程序的可读性会很差。 0×5A80只是一个数值,当你下次再看你写的程序,或者别人读你的程序时,就不明白WDTCTL=0×5A80;的 意思了。如果写成WDTCTL = WDTPW + WDTHOLD;就好理解多了: WDTPW(Watchdog timer password,看门狗的密码,WDTCTL的高8位):只有WDTCTL的高8位为 0×5A时才能对WDTCTL寄存器进行写操作。 WDTHOLD(Watchdog timer hold,WDTCTL的第7位):当WDTCTL的第7位为1时,停止看门狗计时。 这样我们通过PW,HOLD就可以轻松的知道WDTCTL = WDTPW + WDTHOLD;是做什么的了。可以看出 msp430的头文件是很人性化的。 2、当然也有表示地址的,例如,头文件中有以下部分: #ifdef __IAR_SYSTEMS_ASM__ #define DEFC(name, address) sfrb name = address #define DEFW(name, address) sfrw name = address; ///运用了可变参数宏的宏定义格式:#define 宏符号名(参数表) 宏体;;宏体中就是写出参数表中各个

如何学习并使用MSP430单片机(入门)

如何学习MSP430单片机 如何学习MSP430单片机 。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET 一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

企业红头文件标准格式(公文必备)

×××××公司 公文格式 说明:本纸质公文格式样本共8 页,按照国家标准GB/T9704 -1999 并结合公司实际情况制定。

—1— 关于×××××的通知 (批复、函 ) 标题: 小二宋体加粗 ××公司: 主送单位: 小三黑体 ×××××××××××××××××××××××××××××××××××× ×××××××××××××正文×:×小×三仿×宋×××××××××××××××。 ×××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××××××××××××× ××××××××××××××××。 该页为 下行 文 及平行 文首页 格式 发文机构: 宋体,字号不限, 可适当调整,置于同一行 密级、紧急程度: 三号黑体 公司 B 密★一年 特急 ×××××管理有限公司文件 物业××字〔 2004 〕××号 签发人: ×××

—1— 公司 B 密★一年 特急 ×××××管理有限公司文件 签发人:××× 关于×××的请示 ××公司: ×××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××××××××××××× ×× 该页为 上 行文 首页 格 式 物业××字〔 2004 〕××号 ×××

××××××××××××××××××××× 该页为单一机构行文末页格式 附件:1 、××××× 2、××××× 二○ ○三年×月×日联系人:×××,电话:××) 联系人:只在上行文中标注

企业、公司红头文件公文格式

×××××管理有限公司 纸质公文格式 综合管理部 二○○四年九月二十日编制 说明:本纸质公文格式样本共8页,按照国家标准GB/T9704-1999并结合公司实际情况制定。

特 急 ×××××管理有限公司文件 物业××字…2004?××号 签发人:××× 关于×××××的通知(批复、函) ××公司: ×××××××××××××××××××××××××××××××××××××。 ××××××××××××××××××××××××××××××××。 ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。 —1—

公司B密★一年 特急×××××管理有限公司文件 签发人:×××物业××字…2004?××号××× 关于×××的请示 ××公司: ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。 —1—

×××××××××××××××××××××。 2、××××× 二○○三年×月×日 (联系人:×××,电话:××) —2—

××××××××××××××。 附件:1、×××××××× 2、×××××××× 二○○三年×月×日 主题词:×××× 抄报: 抄送:

××××××××××××××。 附件:1、×××××××× 2、×××××××× ××公司××公司××公司 ××公司××公司 二○○三年×月×日 主题词:×××× 抄报: 抄送:

关于MSP430G2系列Launchpad的作品开发实例教程编写和制作说明

关于MSP430G2系列Launchpad的作品开发实例教程编写和制作说明 文字版实例教程编写说明:(要求在2012年12月25日前完成并提交) 封面:1.作品名称、制作单位、作者姓名、制作时间 教程内容:第一章作品概述 第一节作品基本情况介绍(主要介绍所用单片机芯片型号、作品功能)

第二节结合系统组成框图进行作品的软硬件总体设计方案进行介绍 第二章作品硬件系统设计 第一节 MSP430G2系列Launchpad开发板组成及硬件资源情况介绍 第二节对传感器选型及性能指标参数进行介绍 第三节分别对各单元电路进行介绍 第四节给出系统同组成原理图及元器件清单(含元器件型号、数量、封装等)并进行说明 第五节对PCB板设计的要求和注意事项进行说明 第六节对硬件安装调试注意事项和调试、测试方法进行说明 第三章作品软件系统设计 第一节对监控程序总体流程图进行介绍 第二节对各功能子程序在CCS环境下的设计与调试方法进行介绍 第三节对完整监控软件程序的调试方法进行介绍 第四章总结与思考 对该作品从技术性能指标等方面进行技术总结,并提出3—5个扩展和发挥的思考题 PPT实例教程制作说明:(要求在2012年12月25日前完成并提交) 封面:作品名称、制作单位、作者姓名、制作时间 教程内容:1.作品基本情况介绍(主要语音讲解所用单片机芯片型号、作品功能); 2.作品功能展示视频并配有语音讲解; 3. MSP430G2系列Launchpad开发板组成及硬件资源情况语音讲解; 4.在作品实物板上对器件及布局、传感器型号及使用方法、与开发板连接关系、显示方式等进行图 示和语音讲解; 5.结合系统组成框图对整个系统的工作原理进行语音讲解; 6.分别结合硬件单元电路原理图进行语音讲解; 7.结合PCB板裸图,对PCB板设计方法和注意事项进行语音讲解; 8.结合实物图对安装、调试、连接方法进行语音讲解 9.对监控程序总体流程图进行语音讲解; 10.结合软件调试过程,对各功能子程序在CCS环境下的设计与调试方法进行语音讲解; 11.在完整实物板上对整个监控程序的调试方法进行讲解并展示各项功能; 12.总结; 13.提出3—5个扩展和发挥的思考题; 封底:致谢、制作单位(美国TI公司上海分公司、西安电子科技大学测控工程与仪器系)联系方式 PPT实例教程制作注意事项: 1.作品实物照片要保证足够的清晰度; 2.要保证视频的清晰度和镜头的稳定性; 3.语音讲解语速不要快,要清晰流畅,要与图文配合密切; 4.原理图要清晰,大小可根据画面调整,可在PROTEL环境下介绍; 5.实物演示环境要整洁,不要周边有杂物影响; 6.程序设计和调试可在CCS环境下进行; 7.PPT中标题均用黑体字、28号字,正文均用楷体字,24号字; 8.采用统一的PPT文本形式。

MSP430G2553_官方例程(加注释版)

LaunchPad 官方例程(无修改) 一切皆为2012TI杯电子设计大赛 1. //************************************************************************* ***** // LaunchPad Lab2 - Software Toggle P1.0, // // MSP430G2xx2 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.0|-->LED // //************************************************************************* ***** #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer //在MSP430的information A Flash段中一般会有一些比如DCO校正信息,温度传感器校正等等的数据存在,这些是出厂设置好的!但是有时候用户会不小心把infoA擦除掉,而擦除后的内容就为0xFF了。下面程序段的作用是,判断CALBC1_1MHZ的地址内容是否被擦除了,如果擦除了,那么while(1)。如果没有,那么将校正信息添入相应的寄存器,可以得到精度相对高的DCO输出频率 if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } // Configure Basic Clock

MSP430初学者教程(最详细)

如何学习 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以系列为例,解释一下学习的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET 使用指导、F1xx系列、F4xx系列的使用说明和具体芯片的数据说明,可以找到FET的、实验板、知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制FET和实验电路板 自制仿真器FET,首先要到网上找到FET,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画,画完后,就学习认识,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个的功能,还需要、按钮、、三端、、散热器、、普通电容、电阻、等元件的知识,对于初学者,可以做一个只有3个、8个按钮、8个的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上,在未干的情况下,将芯片放在焊盘上,注意芯片第一的位置,并使与焊盘对齐,将擦干净的(不能有任何)接触引脚,引脚只要一热,焊盘上的就自动将引脚焊住了,千万注意上不能有,焊接时最好配备一个。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA 到利尔达公司或的网站下载IA,并安装到计算机上。 (5)调试FET和实验板

Msp430学习笔记

Msp430学习笔记一、简介 图1 基本结构

图2 pin designation 结论: 1.基本每个管脚都可以复用 2.外围功能模块丰富 端口介绍(32 I/O pins) 1.端口P1和P2 具有输入、输出、中断和外部模块功能。这些功能可以通过各自的7个控制寄存器的设置来实现。 (1)PxDIR 输入输出方向寄存器rw (2)PxIN 输入寄存器r (3)PxOUT 输出寄存器r (4)PxIFG 中断标志寄存器r (5)PxIES 中断触发沿选择寄存器rw (6)PxIE 中断使能寄存器rw (7)PxSEL 功能选择寄存器rw 2.其他端口:四个控制寄存器(除去中断相关)看看例程

二、时钟部分 1.时钟寄存器设置 SCFQCTL 系统时钟控制寄存器(倍频,反馈后默认是31,31+1=32) SCFI0 系统时钟频率调整器0(锁频环反馈中的分频(实质最终是倍频)) SCFI1 系统时钟频率调整器1(自动控制调整,无需软件设置) FLL_CTL0 FLL+控制器0 (反馈中是否分频、选择LFXT1晶振的有效电容) FLL_CTL1 FLL+控制器1 (振荡器控制、时钟源对应的振荡器的选择,默认情况下:振荡 器打开,MCLK选择DCOCLK,SMCLK选择DCOCLK) 图时钟模块

2.工作模式:One Active Mode、Five Power Saving Modes MSP430是一个特别强调低功耗的单片机系列,尤其适用于采用电池供电的长时间工作场合。 系统根据应用和节能使用不同的时钟信号,这样可以合理利用系统的电源,实现整个系统的超低功耗。 中断是MSP430微处理器的一大特色。有效地利用中断可以简化程序,并且提高执行效率和系统稳定性。几乎所有的msp430系统单片机的每个外围模块都能产生中断,为MSP430针对事件(外围模块产生的中断)进行的编程打下基础。MSP430在没有事件发生时处于低功耗模式,事件发生时通过中断唤醒CPU,时间处理完毕后CPU再次进入低功耗模式,由于CPU运算速度和推出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态,使得系统的整体功耗极大地降低。 MSP430中断可分为三种:1.系统复位中断;2.不可屏蔽中断;3.可屏蔽中断。 多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430单片机会将不可屏蔽中断控制位SR.GIE(总中断允许位)复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断而去响应更高优先级的中断。但SR.GIE复位不会影响不可屏蔽中断,所以仍可接收不可屏蔽中断的中断请求。

MSP430单片机深入学习笔记

复位 1.POR信号只在两种情况下产生: 微处理器上电。 RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。 2.PUC信号产生的条件为: POR信号产生。 看门狗有效时,看门狗定时器溢出。 写看门狗定时器安全健值出现错误。 写FLASH存储器安全键值出现错误。 3.POR信号的出现会导致系统复位,并产生PUC信号。而PUC信号不会引起POR信号的产生。系统复位后(POR之后)的状态为: RST/MIN管脚功能被设置为复位功能。 所有I/O管脚被设置为输入。 外围模块被初始化,其寄存器值为相关手册上注明的默认值。 状态寄存器(SR)复位。 看门狗激活,进入工作模式。 程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。 4.典型的复位电路有以下3种: (1)由于MSP430具有上电复位功能, 因此,上电后只要保持RST/NMI(设置 为复位功能)为高电平即可。通 常的做法为,在RST/NMI管脚接100k? 的上拉电阻,如图1-5(a)所示。 (2)除了在RST/NMI管脚接100k?的 上拉电阻外,还可以再接0.1μF的电 容,电容的另一端接地,可以使复位 更加可靠。如图1-5(b)所示。 (3)由于MSP430具有极低的功耗,如 果系统断电后立即上电,则系统中电 容所存储的电荷来不及释放,此时系 统电压不会下降到最低复位电压以下, 因而MSP430不会产生上电复位,同时 RST/NMI管脚上也没有足够低的电平 使MSP430复位。这样,系统断电后立 即上电,MSP430并没有被复位。为了 解决这个问题,可增加一个二极管, 这样断电后储存在复位电容中的电荷 就可以通过二极管释放,从而加速电 容的放电。二极管的型号可取1N4008。 如图1-5(c)所示。

MSP430 中文版用户指南

用于MSP430?的IAR嵌入式工作平台版本3+用户指南 Literature Number:ZHCU026X June2004–Revised November2011

内容Preface (5) 1现在就开始! (7) 1.1软件安装 (8) 1.2LED闪烁 (8) 1.3光盘和网络上重要的MSP430文档 (9) 2开发流程 (10) 2.1概述 (11) 2.2使用KickStart (11) 2.2.1项目设置 (12) 2.2.2用于MSP430L092/MSP430C092的附件项目设置 (13) 2.2.3从零开始创建一个项目 (15) 2.2.4用于LPMx.5调试的附加项目设置 (16) 2.2.5MSP430器件的密码保护 (17) 2.2.6使用一个现有的IAR V1.x/V2.x/V3.x项目 (18) 2.2.7堆栈管理和.xcl文件 (18) 2.2.8如何生成德州仪器(TI).TXT(和其它格式)文件 (18) 2.2.9示例程序概述 (18) 2.3使用C-SPY (18) 2.3.1断点类型 (19) 2.3.2使用断点 (20) 2.3.3使用单步执行 (21) 2.3.4使用观察窗口 (21) A常见问题和解答 (23) A.1硬件 (24) A.2程序开发(汇编语言、C语言编译器、连接器) (24) A.3调试中(C-SPY) (26) B FET专用菜单 (30) B.1菜单 (31) B.1.1Emulator→Device Information (31) B.1.2Emulator→Release JTAG on Go (31) B.1.3Emulator→Resynchronize JTAG (31) B.1.4Emulator→Init New Device (31) B.1.5Emulator→Secure-Blow JTAG Fuse (31) B.1.6Emulator→Breakpoint Usage (31) B.1.7Emulator→Advanced→Clock Control (31) B.1.8Emulator→Advanced→Emulation Mode (31) B.1.9Emulator→Advanced→Memory Dump (32) B.1.10Emulator→Advanced→Breakpoint Combiner (32) B.1.11Emulator→State Storage Control (32) B.1.12Emulator→State Storage Window (32) B.1.13Emulator→Sequencer Control (32) B.1.14Emulator→"Power on"Reset (32) B.1.15Emulator→GIE on/off (32) B.1.16Emulator→Leave Target Running (32)

MSP430单片机原理解读

第 2 章MSP430 单片机原理与 C 语言基础MSP430系列超低功耗单片机有200多种型号,TI公司用3~ 4位数字表示其型号。其中第一位数字表示大系列,如MSP430F1xx系列、MSP430F2xx系列、MSP430F4xx系列、MSP430F5xx系列等。在每个大系列中,又分若干子系列,单片机型号中的第二位数字表示子系列号,一般子系列越大,所包含的功能模块越多。最后1~2 位数字表示存储容量,数字越大表示RAM 和ROM 容量越大。430 家族中还有针对热门应用而设计的一系列专用单片机。如SP430FW4xx 系列水表专用单片机、MSP430FG4xx 系列医疗仪器专用单片机、MSP430FE4xx 系列电能计量专用单片机等。这些专用单片机都是在同型号的通用单片机上增加专用模块而构成的。最新的MSP430型号列表可以通过TI公司网站下载。 在开发单片机应用系统时,第一步就是单片机的选型,选择合适的单片机型号往往就能事半功倍。单片机选型基本方法是选择功能模块最接近项目需求的系列,然后根据程序复杂程度估算存储器和RAM 空间,并留有适当的余量,最终决定选用的单片机型号。 本章节以MSP430F249单片机为学习目标,介绍单片机的基本结构和工作原理,读者可以举一反三、触类旁通,而不必每种型号都去学习却无法深入掌握。 2.1 MSP430F249单片机基本结构与原理 2.1.1MSP430F249的主要结构特点 供电电压范围1.8V~3.6V 。 超低功耗:活动状态270uA(1MHz,2.2V);待机模式0.3uA;关机模式0.1uA。 16位RISC精简指令集处理器。 时钟系统:多种时钟源,可灵活使用。时钟频率达到16MHz ;具有内部振荡器;可外接32kHz 低频晶振;外接时钟输入。 12位A/D转换器,内部参考电压,采用保持电路。 16位定时器A,3个捕获/比较寄存器。 16 位定时器B,7 个捕获/比较寄存器。 4个通用串口:USCI_A0 和USCI_A1、USCI_B0 和USCI_B1(I2C、SPI)。 60kB+256B的flash程序存储器,2kB的RAM数据存储器。 64引脚QFP封装。 MSP430F249单片机的芯片封装形式如图2.1所示,各引脚的功能描述如表2-1 所列。 2.1.2 MSP430F249单片机的基本结构 MSP430F24x系列单片机功能结构示意图如图2.2所示。 (1)CPU简介 MSP430单片机的CPU为16位RISC精简指令集的处理器,只有27条正交汇编指令和7 种寻址方式。RISC 处理器基本上是为高级语言所设计的,编译程序对正交指令系统很容易做到最优化,利于产生高效紧凑的代码。MSP430CPU 中集成了16个16位通用寄存器 R0~R15,其中R0~R3分别复用为程序指针PC、堆栈指针SP、状态寄存器SR和常数发生器CG1/CG2。这些寄存器之间的操作只需要一个CPU 周期。

红头文件工资证明范本格式模板

××××××××××××公司 ××字【20××】×号 下面几种证明格式、挑选适合自己的、直接填好打印出来、让财务盖章即可! 员工工作及收入证明 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:年月日 ==================================================================

工资收入证明 ________________: 兹证明________是我公司员工,在________部门任________职务。至今为止,一年以来总收入约为__________元。特此证明。 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:______年___月___日 ==================================================================

工资收入证明 兹证明___是我单位员工,身份证号码:___________,在我单位工作___年,岗位为____,年收入__万元(人民币)。 本证明仅限于该职工办理____信用卡使用,我公司不对该职工使用信用卡可能造成的一切后果承担任何责任。 特此证明 单位名称(盖章):_____ 日期:___年__月__日 公文排版样式 文头的字体:一号黑体字、加粗、红色、居中、字符间距为1.7磅 发文字号的字体:四号仿宋体、黑色 标题的字体:三号黑体字、加粗、黑色、居中 主送机关的字体:四号仿宋体、黑色

红头文件40(情况说明)

路桥灵文(2015)040号签发人:邓宏 关于四川省重点工程公路建设从业单位信用评定公示我项目部存在异议的情况说明芦山县公路养护段: 根据四川省交通运输厅网站公示的四川省重点公路建设从业单 位信用评定公示内容,我公司按照《四川省重点公路建设从业单位信 用管理办法》中有关评分标准,本着实事求是,逐条逐项进行自我评

定,其自我评定结果与公示结果存在偏差,理由如下: 一、项目开工至2014年10月,项目所在地受极端天气影响及土地征用、房屋管线拆迁未及时跟进,导致工程无施工作业面,故项目经理、技术负责人前期在岗时间相对较少;2014年10月至今,项目经理、技术负责人均按合同相关条款约定按时到岗到位,正常开展施工作业; 二、施工机械设备、仪器完全按照合同要求按时到位,设备、仪器运行正常,完全满足施工需要,所有设备严格实行“三定”制度;进场设备、仪器均经业主单位及监理工程师认可; 三、项目管理机构、管理制度完善;原材料、成品、半成品、构配件均按有关规定进行检查检验同时提供了相应的证明材料; 四、所有隐蔽工程均按照相关规定,经报业主、监理工程师现场检验隐蔽工程,经检验合格后才进行隐蔽和进行下一道工序作业; 五、工程实体外观按照《公路工程质量检验评定标准》检验,外观无缺陷,并得到当地老百姓及当地政府的一致肯定; 六、所有项目管理资料均按相关规定完成各方签认并及时归档; 七、安全管理资料、管理制度完善,应急预案、措施已建立并经监理及业主批复。特殊作业人员均持证上岗; 八、本项目开工至今,未发生任何一起安全责任事故; 九、本项目开工至今,民工工资及时发放,未发生拖欠农民工工资事件,做到了民工工资按时发放。 综上所述,我项目部质量、安全管理制度建立健全,未发生安全

MSP430几种常用内置函数解释

几个重要的内联函数(内联函数定义在intrinsics.h中,但是这几个函数使用的时候不需要事先声明该文件头) ①__bic_SR_register(); 将CPU中SR寄存器中的某些位清零。即将括号内的位清零。 例:__bic_SR_register(GIE);//将GIE位清零,即关闭总中断 ②__bis_SR_register(); 将CPU中SR寄存器中的某些位置1。即将括号内的位置1。 ③__interrupt 放在函数前面,标志中断函数。下面这段程序是看门狗 WDT的中断服务函数。WDT_VECTOR为看门狗的中断向量。举例: #pragma vector=WDT_VECTOR __interrupt void WatchDog(void) {…} ④__monitor 放在函数前面,功能是声明当这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响 应。 ⑤__bic_SR_register_on_exit(); 功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位清0. ⑥__bis_SR_register_on_exit(); 功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位置1. ⑦__no_init 放在全局变量前面,功能是使程序启动时不为变量赋初值 ⑧__disable_interrupt 关闭总中断 另外一个相同作用的表达为:_DINT() ⑨__enable_interrupt 开启总中断 另外一个相同作用的表达为:_EINT() ⑩__even_in_range(,); 常被用在多源中断的查询中,如switch(__even_in_range(TAIV,1 0) 意思是:只有在TAIV的值是在0--10内的偶数时才会执行 switch函数内的语句。其作用是提高switch语句的效率 A._NOP() 空操作,等价于__no_operation指令 B.__get_SP_register(void) 功能:返回堆栈指针寄存器SP的值。

MSP430UIF使用说明

MSP430-UIF仿真器使用说明 一. 功能描述 0、USB接口的JTAG仿真器。USB口取电,不需要外接电源,并能给目标板或用户板提供3.3V(300mA)电源; 1、对MSP430 FLASH全系列单片机进行编程和在线仿真; 2、完全兼容德州仪器原厂MSP-FET430UIF开发工具; 3、可在线升级,烧熔丝加密。 4、采用德州仪器标准的2×7 PIN(IDC-14)标准连接器; 5、支持IAR430、AQ430、HI-TECH、GCC以及TI一些第三方编译器集成开发环境下的实时仿真、调试、单步执行、断点设置、存储器内容查看修改等; 6、支持程序烧写读取和熔丝烧断功能; 7、支持JTAG、SBW(2 Wire JTAG)接口; 8、支持固件升级功能。 二. JTAG连接 与目标板相连的14PIN的连接头定义见仿真器外壳(注意第一脚的方向)。仿真器与目标板连接方法如图所示:(详细请参考文件IAR FET Users Guide slau138d.pdf) 图1 Signal Connections for 4-Wire JTAG Communication

图2 Signal Connections for 2-Wire JTAG Communication (Spy-Bi-Wire) 三. 硬件安装 1.插上仿真器,计算机就会发现新硬件如图3 图3 安装第一步 2.选择“从列表或指定位置安装”,点击下一步,如图4找到驱动存放位置

图4 查找驱动3.安装驱动 图5 安装驱动

4.安装完成就可以使用了,在您的电脑里就会多一个串口如图6,不一定都是COM4。 图6 设备管理器位置 四. IAR设置 图7 打开在工程选项如上图

MSP430单片机入门基础例程1

MSP430单片机入门基础例程1 作者:DC 微控技术论坛原创 MSP430单片机入门基础例程 若想了解MSP430单片机常用模块应用原理,请下载<> 由于IO应用原理比较简单,所以我主要以MC430F14开发板的实例来讲解。新手用户可以 参与其应用思路。 计划推出几个有价值的参考例程: [1]直接IO按键检测处理程序(非低功耗方式) [2]IO口中断演示程序 [3]利用IO中断方式实现按键检测程序(低功耗方式) 实验制作如下图,新手用户轻松地在MC430F14开发板上实现。 例程[1]:

//MSP430F14-直接IO口按键检处理程序 /******************************************************************* ******/ //以下是结合MC430F14开发板来实现的按键检处理程序实验. //分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转. //例程中,按键采用不断查询方式,以得到键值.并没有使用到低功耗.此程序结构比较适合 //用在非手持设备或非电池供电的设计中.此程序结构比较通用,级用户可参与或套用修改. //应用目标板:https://www.360docs.net/doc/5011362617.html, MC430F14开发板/******************************************************************* ******/ #include //初级用户要习惯采用宏定义,以方便的编写和修改 #define keyio 0xf8 //定义按键IO口,Px0-Px2 IO口. #define key_1 0xfe //定义返回键值1 #define key_2 0xfd //定义返回键值2 #define key_3 0xfb //定义返回键值3 //声明子程序

相关文档
最新文档