1.分频系数不等于1时候TACTL|=TACLR与TAR=0清零的不同。
2. Timer_A定时器的应用
1.周期性定时
2.比较模块应用
3.测量时间间隔
4.计数器应用
5.PWM闭环应用
6.作为DAC应用—如果将PWM调制波进行低通滤波,取出其直流分量(平均值),滤波后的输出将正比于PWM的占空比。根据这个原理可以利用PWM输出作物额低速DAC使用。例如产生正弦波。
7捕获模式的应用
2. 增强型异步通信
1. 串口在多机中的应用
2. 为了能随时写串口,且不阻塞CPU运行,通常做法是用软件实现一个FIFO来作为高速的数据填入与低速的数据发送之间的缓冲。
实例程序
#include <msp430x42x.h> #define TXBUF_SIZE 32 //发送FIFO的最大容量 Unsigned char TX_BUFF[TXBUF_SIZE]; //发送FIFO缓冲区数组 Unsigned int UART_OutLen=0; //发送FIFO内待发出的字节数 Unsigned int TX_IndexR=0; //发送FIFO的读指针 Unsigned int TX_IndexW=0; //发送FIFO的写指针 /******************************* *名称:UART0_PutChar() *功能:从串口发送1字节数据(向缓冲队列内填入1字节待发送数据) *入口参数:Chr:待发送的字节 *出口参数:返回1表示发送成功 返回0表示发送失败 *说明: 发送过程中,不阻塞CPU运行 *******************************/ Char UART0_PutChar(unsigned char Chr) { If(UART_OutLen == TXBUF_SIZE) //如果FIFO已满 { Return(0); } If(UART_OutLen==0) //如果是第一字节(之前FIFO是空的) { IFG1|=UTXIFG0; //人为制造第一次中断条件(置中断标志位) } _DINT(); //涉及FIFO操作时不允许中断,以免指针错乱 UART_OutLen++; TX_BUFF[TX_IndexW]=Chr; //待发送数据通过写指针写入FIFO If(++TX_IndexW>TXBUF_SIZE) //写指针递增,且判断是否下标越界 { TX_IndexW=0; } IE1|=UTXIE0; //开启UART0的发送,在中断内依次发送数据 _EINT(); Return(1); } #progma vector=UART0TX_VECTOR __interrupt void UART0_TX(void) //串口发送中断 { If(UART_OutLen>0) { UART_OutLen--; U0TXBUF=TX_BUFF[TX_IndexR]; If(++TX_IndexR >= TXBUF_SIZE) { TX_IndexR=0; } } Else IE1&=~UTXIE0; //如果数据发生完毕则关闭UART0的发送中断,停止发送 } Void main(void) { WDTCTL=WDTPW+WDTHOLD; FLL_CTL0 |= XCAP18PF; U0CTL=CHAR; ME1|=UTXE0+URXE0; U0TCTL|=SSEL0; U0BR1=0; U0BR0=13; U0MCTL=0x6B; P2SEL|=BIT4+BIT5; _EINT(); While(1) { UART0_PutChar(0x01); UART0_PutChar(0x02); UART0_PutChar(0x03); UART0_PutChar(0x04); UART0_PutChar(0x05); } }
3. 串口在超级终端中的应用—scanf()与printf()函数在单片机与超级终端交互中的应用
这个我会在上位机调制单片机中写出来。2中串口调试的方法。