标签:SWRST 论下 UART void MSP430F169 复位 中断 串口
目录
1. UART中断工作的机制
UART只有一个发送中断向量和一个接收中断向量,通过判断中断向量的标志来控制数据的收发
1.1 发送机制
当用户想发送数据时,UxIFG产生一个中断,表明UxTXBUF已经准备好接收数据。当UxTXBUF接收字符后或中断被执行,U型IFG将会复位。
SWRST = 1或PUC会置位UxIFG (SWRST: 系统复位)
SWRST = 1或PUC会复位UxIE
1.2接收机制
UxRXBUF每次接收一个字符并加载时,会URXIFGx会产生一个中断
UxRXBUF被读取时或中断被执行时,URXIFG被复位
当PUC或SWRST = 1时UxRXIE 复位
2. 代码实现
//串口初始化模块
void UART_Init()
{
U0CTL|=SWRST + CHAR; //复位SWRST,8位数据模式
U0TCTL|=SSEL1; //SMCLK为串口时钟
U0BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N
U0BR0=baud_l; //N=UBR+(UxMCTL)/8
U0MCTL=0x00; //微调寄存器为0,波特率9600bps
ME1|=UTXE0; //UART0发送使能
ME1|=URXE0; //UART0接收使能
U0CTL&=~SWRST;
IE1|=URXIE0; //接收中断使能位, //必须设置在SWRST之后,否则会复位
P3SEL|= BIT4 + BIT5; //设置IO口为第二功能模式,启用UART功能
P3DIR|= BIT4; //设置TXD0口方向为输出
}
//*************************************************************************
// 串口0发送字符串函数
//*************************************************************************
void Print_Str(uchar *s)
{
while(*s != '\0')
{
Send_Byte(*s++);
}
}
//*************************************************************************
// 串口0发送数据函数
//*************************************************************************
void Send_Byte(uchar data)
{
while(!(IFG1&UTXIFG0)); //发送寄存器空的时候发送数据
U0TXBUF=data;
}
void main(void)
{
WDT_Init(); //看门狗设置
Clock_Init(); //系统时钟设置
Port_Init(); //LED端口初始化
UART_Init(); //串口设置初始化
Print_Str("QQ_ROWOSR\n"); //发送字符串测试
_EINT(); //开中断
while(1) //无限循环
{
}
}
标签:SWRST,论下,UART,void,MSP430F169,复位,中断,串口 来源: https://blog.csdn.net/qq_43313294/article/details/105568300
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。