MSP430F149 串口1设置问题
2019-03-24 13:24发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
- ***************************************************************************************************/
- #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就不行了 求高手指点
复制代码
[
本帖最后由 c316348771 于 2012-9-27 10:51 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>