msp430f5529串口通信

调了一天,终于通了。
这个板子有点坑人,看引脚功能图UART_RX\TX是P3.4\P3.5,结果调了半天都不通,上网查了很久才知道USB的串口是P4.4\P4.5。
对于我这种初学者来说,要走的路还很长呀!

#include <io430.h>

void delay(int ms)        //延时函数
{
	for(int i=0;i<ms;i++)
	for(int j=0;j<240;j++);
}

void send_buf(unsigned char *ptr)    //发送字符串
{
	while(*ptr != '\0')
	{
		while(!(UCA1IFG & UCTXIFG));
		UCA1TXBUF = *ptr;
		ptr++;
		delay(50);
	}
}

void main(void)
{
	WDTCTL = WDTPW + WDTHOLD;      //关闭看门狗
	
	P4DIR |= BIT7;                               //初始化LED

	//串口初始化
	P4SEL    |=  BIT4+BIT5 ;                		// P5.6,7 = USCI_A1 TXD/RXD
    	UCA1CTL1 |=  UCSWRST;                      // **Put state machine in reset**
   	 UCA1CTL1 |=  UCSSEL_1;                     // ACLK
   	 UCA1BR0   =  0x03;                        	// 32768Hz 9600 波特率为9600
   	 UCA1BR1   =  0x00;                       		// 32768Hz 9600
   	 UCA1MCTL |=  UCBRS_3 + UCBRF_0;           // Modulation UCBRSx=1, UCBRFx=0
    	 UCA1CTL1 &= ~UCSWRST;                   // **Initialize USCI state machine**
   	 UCA1IE   |=  UCRXIE;                     	// Enable USCI_A1 RX interrupt 使能中断
         
         //S2
	P2IE |= BIT;
	P2IES |= BIT1;
	P2IFG &= ~ BIT1;
	P2REN |= BIT1;
	P2OUT |= BIT1;
	_EINT();                                               //中断使能

	send_buf("串口通信\r\n");
	while(1)
	{
		;
	}
}

#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_ISR()
{
	switch(_even_in_range(UCA1IV,4))
	{
	case 0:break;                             // Vector 0 - No interrupt
    	case 2:                                   // Vector 2 - RXIFG
        		UCA1TXBUF = UCA1RXBUF;                // 发送接收到的数据
                                              // 如需对发送信息进行处理修改此处
        	break;
   	 case 4:break;                             // Vector 4 - TXIFG
   	 default: break;
	}
}

#pragma vector = PORT2_VECTOR
__interrupt void P2_ISR()
{
	if(P2IFG & BIT1)
	{
		while((P2IN & BIT1)==0);
		P4OUT ^= BIT7;
		send_buf("Pressed\r\n");
	}
	P2IFG &=~ BIT1;
}
  • 34
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值