msp430g2553学习笔记 联系客服

发布时间 : 星期三 文章msp430g2553学习笔记更新完毕开始阅读dc861e7d647d27284b735165

1,USCI_A:支持UART, IrDA, SPI

USCI_B:支持I2C, SPI

2,UART 这个模块没什么好说的,和其他的一写处理器如S12,ARM等差不多。只要设置好几个控制寄存器,波特率,写几个收发函数就可以了。下面就给出msp430g2553于PC用UART通信的基本程序:

#include \

unsigned char rev;

char *string1=\

char string2[]=\ //\\n是换行符

void putchar(unsigned char c) //发送字符函数 {

while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? 等待TX buffer为空

UCA0TXBUF = c; // TX -> RXed character 发送字符c }

void putstr(char *s) //发送字符串函数 {

IE2 &= ~UCA0RXIE; //发送时先关闭接收中断,不接收

while((*s)!='\\0') //如果没有发完,就继续循环发送 {

putchar(*s);

// putchar('\\n'); //发送换行符

s++; }

IE2 |= UCA0RXIE; //发送完了打开接收中断 }

void main(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

P1DIR=BIT0;

BCSCTL1 = CALBC1_1MHZ; // Set DCO 为1MHz

DCOCTL = CALDCO_1MHZ;

P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

P1SEL2 = BIT1 + BIT2; //第二外围模式选择

// UCA0CTL1 |= UCSSEL_2; // SMCLK 其他默认:软件复位使能 USCI逻辑保持在复位状态,用于设置串口

//UCA0CTL0全部为默认状态:无奇偶校验,LSB first,8bit_data,一位停止位,UART模式,异步模式

// UCA0BR0 = 8; // SMCLK 1MHz 115200 8

// UCA0BR1 = 0; // 1MHz 115200

// UCA0MCTL = UCBRS2 + UCBRS0; // Modulation UCBRSx = 5

//下面是选择ACLK,波特率设置为固定的

UCA0CTL1 |= UCSSEL_1; //ACLK

UCA0BR0 = 3; // ACLK 32768Hz 9600 32768Hz/9600 = 3.41

UCA0BR1 = 0; // 32768Hz 9600

UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** 初始化释放,可以操作

IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt 接收中断使能

__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled }

// Echo back RXed character, confirm TX buffer is ready first

#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void) {

while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? 等待TX buffer为空

UCA0TXBUF = UCA0RXBUF; // TX -> RXed character 发送接收到是数据

rev=UCA0RXBUF;

if(rev&0x01) {

P1OUT |= BIT0;

putstr(string1);

putstr(string2); }

else

P1OUT &= ~BIT0; }

注意:关于波特率的设置这一块还没有看懂,但上面的例子总的设置是对的

值得说明的是:可以用定时器来实现串口通信功能,例子还没有看。

3,对于SPI和I2C,有时有可能会用于g2553和其他的一些芯片、设备的通信用,还没没仔细看。

(六),比较器A Comparator_A+

1,是一个模拟电压比较器,主要功能是指出两个输入电压CA0和CA1的大小关系,然后由输出信号CAOUT输出。

2,输出:如果正端输入电压大于负端输入电压,输入为1。如果负端输入电压大于正端输入电压,输出为0;

3,最终输出信号的上升沿或下降沿可以设置为具有中断能力,中断响应后,硬件会自动清除中断标志位CAIFG,也可以被软件清除。

4,Comparator_A+支持精密的斜坡AD转换,供电电压检测和监视外部模拟信号。

5,比较器的其中一路可以接参考电压,有0.25VCC, 0.5VCC, 三极管的阀值电压0.55V

也可以两路信号都接外部的模拟信号。

6,更详细的内容,参见用户只能,下面的例子是简单的用比较器A比较两个输入模拟电