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
------------------------------------------------------