MSP430F149 串口1设置问题

2019-03-24 13:24发布

  1. ***************************************************************************************************/
  2. #include "io430.h"
  3. #include     //引用本征函数需包含本头文件
  4. #include "nbc430.h"

  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. //***********************************************************************************
  8. //IO初始化操作
  9. //***********************************************************************************
  10. void delay(uint time)
  11. {
  12.         uint i,j;
  13.         for(i = 0;i < time; i++)
  14.         {
  15.            for(j = 0;j <30; j++);
  16.             }
  17. }
  18. void IO_init(void)
  19. {
  20.        P3DIR6=1;P3DIR7=0;        //设置P36输出与P37输入
  21.        P3DIR3=1;                 //设置P33输出
  22. }
  23. //**************************************************************************************************
  24. //初始化串口
  25. //**************************************************************************************************
  26. void init_com( void )
  27. {      
  28.        P3SEL |= 0xc0;           //0x30=0011_0000,即选择P3.4和P3.5做UART通信端口
  29.        ME2 |= UTXE1 + URXE1;    //使能UART0的发送TXD和接受RXD
  30.       
  31.        //设置波特率9600bps,寄存器数据为32768/9600=3.41
  32.        UTCTL1 = SSEL1;          //UCLK = ACLK,选择时钟来源32K
  33.        UBR01 = 0x03;            //波特率寄存器低字节
  34.        UBR11 = 0x00;            //波特率寄存器高字节
  35.        UMCTL1 = 0x34;           /*波特率小数寄存器,首先把小数部分0.41x8=3.2,取整后为3,这个3的意思就
  36.                                  是在UxMCTL中的8位里要有3个1,3个1要相对分散点,低4位最好选择偶数*/  
  37.        UCTL1 |= CHAR;           // 数据格式为8位数据
  38.        UCTL1 &= ~SWRST;         //使能USART
  39.        IE2 |= URXIE1;           //让串口接收到数据后能产生中断
  40.       
  41.        _EINT();                 //开总中断,整个系统中断使能
  42.   //     LPM3;                    //进入低功耗模式
  43. }
  44. //**************************************************************************************************
  45. //串口中断函数
  46. //**************************************************************************************************
  47. #pragma vector=UART1RX_VECTOR
  48. __interrupt void usart1_rx (void)
  49. {
  50.   P33=1;
  51.   while((IFG2&UTXIFG1)==0);       // 当发送缓存为空时
  52.   TXBUF1 = RXBUF1;                //将接收到的数据发送出去
  53.   delay(5);
  54.   P33=0;
  55. }
  56. //**************************************************************************************************
  57. //主函数
  58. //**************************************************************************************************
  59. void main(void)
  60. {
  61.        WDTCTL = WDTPW + WDTHOLD;//禁止看门狗复位
  62.        IO_init();               //IO初始化
  63.        init_com( ) ;            //初始化串口
  64.        P33=0;
  65.        while(1)//循环
  66.        {
  67. //       delay(5000);
  68.       
  69.          /*      while((IFG1&UTXIFG0)==0);       // 当发送缓存为空时
  70.        TXBUF0 = 0x0f;                //将接收到的数据发送出去 ;
  71.         delay(10000);
  72. */
  73.        }     
  74. }

  75. 同样的设置 在串口0可以正常使用!改到串口1就不行了 求高手指点
复制代码
[ 本帖最后由 c316348771 于 2012-9-27 10:51 编辑 ] 此帖出自小平头技术问答
0条回答

一周热门 更多>

相关问题

    相关文章