msp430f149单片机串口C程序,msp430f149单片机
投稿于 被查看 48920 次 评论:255
msp430f149单片机串口C程序,msp430f149单片机
msp430f149单片机串口C程序 msp430f149单片机简介: MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。msp430f149是基于闪存或 ROM 的超低功耗 MCU,提供 8MIPS,工作电压为 1.8V - 3.6V,具有高达 60KB 的闪存和各种高性能模拟及智能数字外设。 超低功耗低至: 0.1μA RAM (保持模式) 0.7μA (实时时钟模式) 200μA/MIPS (工作模式) 在 6μs 之内快速从待机模式唤醒 器件参数: 闪存选项:1KB – 60KB ROM 选项:1KB – 16KB RAM 选项:512B – 10KB GPIO 选项:14、22、48 引脚 ADC 选项:10 和 12 位斜率 SAR 其它集成外设:模拟比较器、DMA、硬件乘法器、SVS、12 位 DAC (以上资料摘自于百度百科)
C语言程序(采用IAR for 430):
#include <msp430x14x.h> typedef unsigned char uchar; typedef unsigned int uint; uchar RecBuf[256]; uchar Windex; uchar Rindex; void Send1Char(uchar sendchar); void PutString(uchar *ptr); void com_init();//串口初始化 void com_init() { unsigned int i; /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 P6DIR |= BIT7;P6OUT &=~ BIT7; //关闭电平转换 P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口 BCSCTL1 &= ~XT2OFF; // XT2on do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? BCSCTL2 |= SELM_2 + SELS; // MCLK = SMCLK = XT2 (safe) ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受 UCTL0 |= CHAR; // 选择8位字符 UTCTL0 |= SSEL1; // UCLK = SMCLK UBR00 = 0x45; // 波特率115200 UBR10 = 0x00; // UMCTL0 = 0x00; // Modulation UCTL0 &= ~SWRST; // 初始化UART状态机 IE1 |= URXIE0; // 使能USART0的接收中断 _EINT(); //打开全局中断 Windex = 0; Rindex = 0; } /******************************************* 函数名称:UART0_RXISR 功 能:UART0的接收中断服务函数,在这里唤醒 CPU,使它退出低功耗模式 参 数:无 返回值 :无 ********************************************/ #pragma vector = UART0RX_VECTOR __interrupt void UART0_RXISR(void) { if(RXBUF0 == 0x0d) LPM1_EXIT; else { RecBuf[Windex++] = RXBUF0; Windex &= 0x7f;//when Windex=0x80,changed to 0x00; } } /******************************************* 函数名称:Send1Char 功 能:向PC机发送一个字符 参 数:sendchar--要发送的字符 返回值 :无 ********************************************/ void Send1Char(uchar sendchar) { while (!(IFG1 & UTXIFG0)); //等待发送寄存器为空 TXBUF0 = sendchar; } /******************************************* 函数名称:PutSting 功 能:向PC机发送字符串 参 数:ptr--指向发送字符串的指针 返回值 :无 ********************************************/ void PutString(uchar *ptr) { while(*ptr != '\0') { Send1Char(*ptr++); // 发送数据 } while (!(IFG1 & UTXIFG0)); TXBUF0 = 0x0d; while (!(IFG1 & UTXIFG0)); TXBUF0 = 0x0a; //发送换行指令 } /********************主函数********************/ void main(void) { com_init(); PutString("welcome to my blog"); PutString("I am meizumx4!"); while(1) { LPM1; } }
-------------------------------------------------------
通信格式:N.8.1, 115200
无校验,8个数据位,1个停止位,波特率115200
------------------------------------------------------
用户评论