欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
MSP430單片機UART幀超時處理程序
[打印本頁]
作者:
51hei單片
時間:
2016-3-14 19:17
標題:
MSP430單片機UART幀超時處理程序
本程序是《MSP430系列單片機系統工程設計與實踐》書里面的源碼,(包含工程文件 (例2.9.14)))完整例程下載:
http://www.raoushi.com/bbs/dpj-46245-1.html
‘
關于本程序的詳細解說大家可以下載電子書點擊上圖即可
#include <msp430x42x.h>
#define FRAMEBUF_SIZE 32 /*最大幀長度*/
#define IDLELINE_TIME 200 /*線路空閑判據時間*/
unsigned char FrameBuff[FRAMEBUF_SIZE]; /*接收幀緩沖區數組*/
unsigned int UART_RcvCnt=0; /*接收計數*/
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX (void) // 串口接收中斷
{
TAR=0; //清除幀空閑計時值
TACTL|=MC_1; //開始計時
if(UART_RcvCnt<FRAMEBUF_SIZE) //若緩沖區未滿
{
FrameBuff[UART_RcvCnt]=U0RXBUF; //接收一字節數據
UART_RcvCnt++; //指向下一字節
}
else IFG1 &=~ URXIFG0; //接受區已滿,不接收
} //讀取RXBUF會自動清除串口中斷標志,不接收時需要手動清除
#pragma vector=TIMERA1_VECTOR
__interrupt void TA_ISR(void) //定時器溢出中斷
{ int i;
if(TAIV==10) //TA溢出
{
TACTL &=~ MC_3; //停止計數器
//--------------------------------------------------------------------------
// 數據幀接收完畢,在這里寫數據幀處理程序,注意緩沖區只用前UART_RcvCnt個數據
_NOP(); //在這里設斷點查看FrameBuff[]數組的數據
//--------------------------------------------------------------------------
UART_RcvCnt=0; //清除接收計數
for(i=0;i<FRAMEBUF_SIZE;i++) FrameBuff[i]=0; //清除接收緩沖區(可省略)
}
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // 停止看門狗
FLL_CTL0 |= XCAP18PF; // 配置晶振負載電容
U0CTL = CHAR; // 異步通訊模式,8位數據,無校驗,1位停止位。
ME1 |= UTXE0 + URXE0; // 開啟串口0收發模塊
U0TCTL |= SSEL0; // 選擇ACLK作為串口波特率時鐘源。
U0BR1 = 0; //
U0BR0 = 13; // 分頻系數整數部分=13
U0MCTL = 0x6B; // 分頻系數小數部分調制=5/8。(2400bps)
P2SEL |= BIT4 + BIT5; // P2.4,5 開啟第二功能,作為串口收發引腳(不同單片機有差別)
IE1 |= URXIE0; // 開啟UART0的接收中斷,在中斷內接收數據
TACTL = TASSEL_1 + TAIE; // TA設為增計數模式,時鐘=ACLK,開中斷
TACCR0=IDLELINE_TIME; //設置溢出超時條件
_EINT(); // 總中斷允許
while(1)
{
//CPU可以執行其他任務
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1