MSP430F4152串口操作
扫描二维码
随时随地手机看文章
/**********************************************************************/
/*
名称:串口通讯
功能:将接到的数据组后原封不动的发送出去
*/
/**********************************************************************/
#include
unsignedchari,ii,n;
unsignedcharRX[20]={0};
voidUART_init()
{
P6SEL|=BIT5+BIT6;//P6.5,6=USCI_A0RXD/TXD
UCA0CTL1|=UCSSEL_1;//CLK=ACLK
UCA0BR0=0x03;//32k/9600-3.41
UCA0BR1=0x00;//
UCA0MCTL=0x06;//Modulation
UCA0CTL1&=~UCSWRST;//**InitializeUSCIstatemachine**
IE2|=UCA0RXIE;//EnableUSCI_A0RXinterrupt
IE2&=~UCA0TXIE;
}
////////////////////////////////////////////////////////////////////////////////
voidIint_Port1(void)//端口P1_4和P1_5中断
{
P1DIR&=~BIT5;//设置为输入方向P1_4
P1SEL&=~BIT5;//设置为普通I/O口功能
P1IES&=~BIT5;//选择上升沿触发
P1IE|=BIT5;//打开中断允许
P1IFG&=~BIT5;//P2IES的切换可能使P1IFG.4置位,需清除
_EINT();
}
/////////////////////////////////////////////////////////////////////
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//StopWDT
FLL_CTL0|=XCAP14PF;//Configureloadcaps
Iint_Port1();
UART_init();
_BIS_SR(LPM3_bits+GIE);//EnterLPM0,interruptsenabled
}
////////////////////////////////////////////////////////////////////
#pragmavector=USCIAB0RX_VECTOR
__interruptvoidUSCIA0RX_ISR(void)
{
RX[i]=UCA0RXBUF;
i++;
if(RX[i-1]==0x68)
{
n=i;
i=0;
}
}
////////////////////////////////////////////////////////////////////////
#pragmavector=PORT1_VECTOR//外部中断中断入口
__interruptvoidP1_ISR(void)
{
if(P1IFG&BIT5)
{
P1IFG&=~BIT5;//多源中断,需靠软件清除P1IFG.5
for(ii=0;ii { UCA0TXBUF=RX[ii]; while(!(IFG2&UCA0TXIFG)); } } }