打印
[MCU]

MSP430F149 串口1设置问题

[复制链接]
589|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2020-12-3 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • ***************************************************************************************************/
  • #include "io430.h"
  • #include     //引用本征函数需包含本头文件
  • #include "nbc430.h"
  • #define uchar unsigned char
  • #define uint  unsigned int
  • //***********************************************************************************
  • //IO初始化操作
  • //***********************************************************************************
  • void delay(uint time)
  • {
  •         uint i,j;
  •         for(i = 0;i < time; i++)
  •         {
  •            for(j = 0;j <30; j++);
  •             }
  • }
  • void IO_init(void)
  • {
  •        P3DIR6=1;P3DIR7=0;        //设置P36输出与P37输入
  •        P3DIR3=1;                 //设置P33输出
  • }
  • //**************************************************************************************************
  • //初始化串口
  • //**************************************************************************************************
  • void init_com( void )
  • {
  •        P3SEL |= 0xc0;           //0x30=0011_0000,即选择P3.4和P3.5做UART通信端口
  •        ME2 |= UTXE1 + URXE1;    //使能UART0的发送TXD和接受RXD
  •       
  •        //设置波特率9600bps,寄存器数据为32768/9600=3.41
  •        UTCTL1 = SSEL1;          //UCLK = ACLK,选择时钟来源32K
  •        UBR01 = 0x03;            //波特率寄存器低字节
  •        UBR11 = 0x00;            //波特率寄存器高字节
  •        UMCTL1 = 0x34;           /*波特率小数寄存器,首先把小数部分0.41x8=3.2,取整后为3,这个3的意思就
  •                                  是在UxMCTL中的8位里要有3个1,3个1要相对分散点,低4位最好选择偶数*/
  •        UCTL1 |= CHAR;           // 数据格式为8位数据
  •        UCTL1 &= ~SWRST;         //使能USART
  •        IE2 |= URXIE1;           //让串口接收到数据后能产生中断
  •       
  •        _EINT();                 //开总中断,整个系统中断使能
  •   //     LPM3;                    //进入低功耗模式
  • }
  • //**************************************************************************************************
  • //串口中断函数
  • //**************************************************************************************************
  • #pragma vector=UART1RX_VECTOR
  • __interrupt void usart1_rx (void)
  • {
  •   P33=1;
  •   while((IFG2&UTXIFG1)==0);       // 当发送缓存为空时
  •   TXBUF1 = RXBUF1;                //将接收到的数据发送出去
  •   delay(5);
  •   P33=0;
  • }
  • //**************************************************************************************************
  • //主函数
  • //**************************************************************************************************
  • void main(void)
  • {
  •        WDTCTL = WDTPW + WDTHOLD;//禁止看门狗复位
  •        IO_init();               //IO初始化
  •        init_com( ) ;            //初始化串口
  •        P33=0;
  •        while(1)//循环
  •        {
  • //       delay(5000);
  •       
  •          /*      while((IFG1&UTXIFG0)==0);       // 当发送缓存为空时
  •        TXBUF0 = 0x0f;                //将接收到的数据发送出去 ;
  •         delay(10000);
  • */
  •        }
  • }
  • 同样的设置 在串口0可以正常使用!改到串口1就不行了 求高手指点

复制代码

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1327

主题

3831

帖子

0

粉丝