久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

新唐M051 UART0使用程序

作者:huqin   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年09月01日   【字體:

 

 
#include "UART.h"
/****************************************
*函數(shù)名稱:UartInit
*輸    入:unFosc   晶振頻率
          unBaud  波特率
*輸    出:無
*功    能:串口初始化
******************************************/
VOID UartInit(UINT32 unFosc,UINT32 unBaud)
{
    P3_MFP &= ~(P31_TXD0 | P30_RXD0);  
    P3_MFP |= (TXD0 | RXD0);      //P3.0 使能為串口0接收
          //P3.1 使能為串口0發(fā)送
    UART0_Clock_EN;         //串口0時鐘使能
    UARTClkSource_ex12MHZ;  //串口時鐘選擇為外部晶振
    CLKDIV &= ~(15<<8);  //串口時鐘分頻為0
    IPRSTC2 |= UART0_RST;   //復(fù)位串口0
    IPRSTC2 &= ~UART0_RST;  //復(fù)位結(jié)束
    UA0_FCR |= TX_RST;      //發(fā)送FIFO復(fù)位
    UA0_FCR |= RX_RST;      //接收FIFO復(fù)位
    UA0_LCR &= ~PBE;      //校驗位功能取消
 UA0_LCR &= ~WLS;
    UA0_LCR |= WL_8BIT;     //8位數(shù)據(jù)位
    UA0_LCR &= NSB_ONE;     //1位停止位 
    UA0_BAUD |= DIV_X_EN|DIV_X_ONE;   //設(shè)置波特率分頻    
    UA0_BAUD |= ((unFosc / unBaud) -2); //波特率設(shè)置  UART_CLK/(A+2) = 115200, UART_CLK=12MHz
 UA0_IER |= RDA_IEN;     //接收數(shù)據(jù)中斷使能 
 NVIC_ISER |= UART0_INT;     //使能串口0中斷
}
/****************************************
*函數(shù)名稱:UartSend
*輸    入:pBuf     發(fā)送數(shù)據(jù)緩沖區(qū)
          unNumOfBytes  發(fā)送字節(jié)總數(shù)
*輸    出:無
*功    能:串口發(fā)送數(shù)據(jù)
******************************************/
VOID UartSend(UINT8 *pBuf,UINT32 unNumOfBytes)
{
  UINT32 i; 
  for(i=0; i<unNumOfBytes; i++)
  {
         UA0_THR = *(pBuf+i);
         while ((UA0_FSR&TX_EMPTY) != 0x00); //檢查發(fā)送FIFO是否為空 
  }
}
/****************************************
*函數(shù)名稱:UART0_IRQHandler
*輸    入:無
*輸    出:無
*功    能:串口0中斷服務(wù)函數(shù)
******************************************/
VOID UART0_IRQHandler(VOID)
{
    UINT8 ucData;
 if(UA0_ISR & RDA_INT)     //檢查是否接收數(shù)據(jù)中斷
 {  
  while(UA0_ISR & RDA_IF)    //獲取所有接收到的數(shù)據(jù)
  {
   while (UA0_FSR & RX_EMPTY);  //檢查接收FIFO是否為空    
   ucData = UA0_RBR;    //讀取數(shù)據(jù)
   UartSend(&ucData,1);   //發(fā)送數(shù)據(jù)
   //以下測試接收數(shù)據(jù)用
    if(ucData == 0x11)  P2_DOUT &= ~0xff;
    if(ucData == 0xff)  P2_DOUT |= 0xff;
  }
 }
}
/****************************************
*函數(shù)名稱:main
*輸    入:無
*輸    出:無
*功    能:函數(shù)主體
******************************************/
INT32 main(VOID)
{
// unsigned char i,j;
     PROTECT_REG
  (            //ISP下載時保護(hù)FLASH存儲器
   PWRCON |= XTL12M_EN;      //默認(rèn)時鐘源為外部晶振
   while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz時鐘穩(wěn)定 
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //設(shè)置外部晶振為系統(tǒng)時鐘
   //以下測試接收數(shù)據(jù)
   //P2_PMD=0x5555;          //GPIO設(shè)置為輸出模式  
  )
  UartInit(12000000,9600);      //波特率設(shè)置為9600bps
  while(1)
  {
/*   j=0;
                //發(fā)送數(shù)據(jù)0~255
    for(i=0; i<256; i++)
    {
       UartSend(&j,1);
     j++;
     Delayms(50);   
    } */
  }
}
 
關(guān)閉窗口
主站蜘蛛池模板: 天天天操天天天干 | 成人午夜在线视频 | 日本高清不卡视频 | 日韩一区不卡 | 欧美一区二区三区视频在线播放 | 精品一区欧美 | 国产一区二区在线免费 | 一区二区三区高清 | 久久高清免费视频 | 精品国产乱码久久久久久蜜臀 | 亚洲精品视频一区 | 97国产精品视频人人做人人爱 | 中国三级黄色录像 | 国产精品久久久久一区二区三区 | 天天草夜夜骑 | 在线国产一区二区 | 午夜影院黄 | 中文字幕在线一区二区三区 | aaaa网站| 成人在线视频一区二区三区 | 日本大香伊一区二区三区 | 国产精品成人久久久久 | 亚洲va欧美va天堂v国产综合 | 欧美综合自拍 | 欧美a级成人淫片免费看 | 国产精品123区 | 精品国产一区二区在线 | 一级免费a| 日本在线播放一区二区 | 国产精品爱久久久久久久 | 成人黄色av网站 | 在线看一区二区三区 | 国产日韩中文字幕 | 91久久国产精品 | 日韩欧美在线视频播放 | 免费成人av | 国产区精品 | 欧美精品一区二区三区视频 | 二区不卡 | 欧美精品在线免费观看 | 亚洲综合色丁香婷婷六月图片 |