MSP430串口

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

你参考一下别人的代码看看注释很详细

#include

unsigned char RxData;//全局变量,保存接收到的数据。

void BasicClockSet()

{

/*下面将片外高速晶体设为MCLK分四步:

(1) 起动高晶体

(2) 清除OFIFG 标志位

(3) 至少等待50us。

(4) 查看震荡器失效标志位OFIFG是否清0,如果没有清0,

则重复1至4步直到震荡器失效标志位OFIFG清0。

与之相关寄存器为:

1.BCSCTL1和BCSCTL2(基础系统时钟控制寄存器)

2.IE1中断使能寄存器的第二位OFIE,振荡器失效中断使能位。

3.IFG1中断标志寄存器的第二位OFIFG,振荡器失效标志位。

4.DCOCTL数字震荡器控制寄存器。

一. BCSCTL1设置(基础系统时钟控制寄存器1):

1.XT2OFF=0,外部高速晶体开。

2.XTS=0,片外低速晶体的频率,0为低频模式。

3.DIVAx=00B,不将其进行分频,即分频比为1

4.XT5V不使用设为0。

5.RSELx=111,DOC的电阻选择,此时DOC震荡频率达到最大10000MHZ(理想状态)。

因此BCSCTL1=0000 0111B=0x47。

二.BCSCTL2设置(基础系统时钟控制寄存器2):

1.SELMx=10B,选择片外高速晶体作为MCLK。这两位应等到振荡器失效标志位清0后才置位

2.DIVMx=00B,不将其进行分频,即分频比为1

3.SELS=0B,选择子系统时钟为DCO

4.DIVSx=00B,不将其进行分频,即分频比为1

5.DCOR=0B,选择芯片内部电阻。

三.DCOCTL(数字震荡器控制寄存器)

1.DCOx=111,DCO频波段选择,此时诜择最大

2.MODx=000,调制选择,当DCOx=111B时MODx无效。*/

/*下面将片外高速晶体设为主系统时钟。*/

//(1) 起动片外高速晶体

BCSCTL1&=~XT2OFF;//XT2OFF的宏为0x80。

do

{

//(2).清除震荡失效标志位。

IFG1 &= ~OFIFG;//OFIFG的宏为0x02,此意是清除振荡器失效标志。

//(3).至少等待50us。

{unsigned char i=0xff;while(i--);}

//(4).查看震荡器失效标志位OFIFG是否清0,如果没有清0,

//则重复1至4步直到震荡器失效标志位OFIFG清0。

}while((IFG1 & OFIFG));//直到振荡器失效标志清0。

//震荡失效标志清除后表明,高速晶体可以安全起动了。

BCSCTL2 |= SELM_2;//SELM_2的宏为0x1000,这样就起动了高晶体。

/*将片外低速晶体设为子系统时钟。*/

//(1)DOC的电阻选择。

BCSCTL1 |= RSEL0+RSEL1+RSEL2;//表示三个都选了,即RSELx=111B。//(2)DCO频波段选择。

DCOCTL |= DCO0+DCO1+DCO2;//表示三个都选了波段最高。即

DCOx=1110 0000B。

//(3).MODx低5位,调制选择,当DCOx=111B时MODx无效。

/*下面将辅助系统时钟ACLK设为手表晶体32768HZ。*/

//ACLK的来源只有片外低速晶体。且上电默认是片外低速晶体。

//只能设置其分频比,默认最大,DIVAx=00B,分频比为1。

}

// /*下面为UARTx初始化过程。

void Uart0Init()

{

/*下面为UARTx初始化过程

(1) 设置SWRST软件复位使能,使UART进入复位状态

(2) 初始化所有的UART寄存器(包括UART控制寄存器UxCTL)

(3) 设置模块使能寄存器,设置发送使能和接收使能。

(4) 清除软件复柆使能位SWRST

(5) 设置中断使能寄存器IEx,使能接收中断使发送中断。(可以不设置)

(未遵守这些步聚可能会导致无法预料的错误。)

相关寄存器有:

1. UxCTL,USART控制寄存器。

第7位PENA,奇偶效验使能位。1使能。

第6位PEV,奇偶效验选择,0奇,1偶。

第5位SPB,停止位数,0,1位;1,2位。

第4位CHAR,数据位设置,0,7位;1,8位。

第3位LISTEN,1使能自己发自己收。

第2位SYNC,0,UART模式;SPI模式。

第1位MM,0,多机通讯空闲线路模式;1.地址位控制模式。

第0位SWRST,软件复位使能,0使能,1不使能。

2. UxTCTL,USART发送控制寄存器。

第7位Unused,

第6位CKPL,外部时钟反向使能,0不使能。

第5-4位SSELx,时钟源选择。01B,ACLK。

第3位URXSE,接收使能(多机通讯),多机通讯时,相当于51单片机中的SM2。

第2位TXWAKE,发送唤醒(多机通讯),0表数据,1表示地址(唤醒对方),相当51单片机中的TB8。

第1位Unused,

第0位TXEPT,发送完成标志位,1完成。

3. UxRCTL, USART接收控制寄存器。

第7-4位,错误标志位。

第3位URXEIE,发送错误中断使能。1.有错误也置位接收中断标志。

第2位URXWIE,接收唤醒中断使能。1.只有接收到地址才置位接收中断标志。

第1位RXWAKE,唤醒使能(多机通讯),0表数据;1为地址(被唤醒),相当51单片机中的RB8。

第0位RXERR,有错标志位,相当于7-4位或的结果。

4. UxBR0, USART波特率设制寄存器0。

5. UxBR1, USART波特率设制寄存器1。

6. UxMCTL, USART调制波特率设制寄存器(能实行小数波待率)。

7. UxRXBUF, USART接收缓存。

8. UxTXBUF, USART发送缓存。

相关文档
最新文档