MSP430串口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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发送缓存。