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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3320|回復: 0
打印 上一主題 下一主題
收起左側

STM8L051F3 寄存器版 串口驅動

[復制鏈接]
跳轉到指定樓層
樓主
ID:46381 發表于 2019-3-9 20:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "Config.h"


u8 Uart_Receive_Flag=0;
u8 Uart_Send_len=0;
u16 Uart_Receive_len=0;
u8 Uart_Receive_Ack_len=0;      //期望 接收到的ACK 長茺
u8 Uart_Send_Buf[UART_SEND_LEN];     
u8 Uart_Receive_Buf[UART_RECEIVE_LEN];

void UART1_IO_Config(void)
{

  PA_DDR_DDR3 =0;//輸入
  PA_CR1_C13  =1;//上拉輸入
  PA_CR2_C23 =0;


  PA_ODR_ODR2 =1;
  PA_CR1_C12  =1;//推挽輸出
  PA_CR2_C22  =1;//輸出擺率10M   
  PA_DDR_DDR2 =1;//輸出高電平,TX空閑狀態為高電平,如果不設置,會莫名奇妙的發送0x00


    //開啟引腳的UART功能

    //00: USART1_TX on PC3 and USART1_RX on PC2

    //01: USART1_TX on PA2 and USART1_RX on PA3

    //10: USART1_TX on PC5 and USART1_RX on PC6

    SYSCFG_RMPCR1_USART1TR_REMAP =1;//PC2,PC3      這個要搞懂
    //如果需要使用其他引腳作為串口發送接收引腳,請在這里選擇

}
void UART1_CLK_EN()
{
  CLK_PCKENR1_PCKEN15=1;//開啟USART外設時鐘
}
void UART1_CLK_DIS()
{
  CLK_PCKENR1_PCKEN15=0;//開啟USART外設時鐘
}
void UART1_Mode_Config()
{

    //設置串口工作方式

    USART1_CR1_M =0;//1 start bit,8 data bit,n stop bit

    USART1_CR3_STOP0=0;USART1_CR3_STOP1=0;//1 stop bit

    //設置波特率

    //波特率設置為9600

    // 2000000/9600=208    //2000000是此時系統的主時鐘頻率,默認8分頻,16M/8=2M

    //208(DEC)=00D0(HEX)

    USART1_BRR2 =0x03;//the BRR2 should be programmed before BRR1

    USART1_BRR1 =0x68;

    USART1_CR2_TEN=1;//使能發送
//    USART1_CR2_TIEN=0;//打開發送中斷
    USART1_CR2_REN=1;//使能接收.
    USART1_CR2_RIEN=1;//打開接收中斷

}
void UART1_NVID_Config()
{


}

void UART1_Config()
{  
  UART1_IO_Config();
  UART1_CLK_EN();
  UART1_Mode_Config();// 9600 8 1  發送 接收 接收中斷
  UART1_NVID_Config();
}
void Uart1_Send_Data(unsigned char  data)
{
  while(0       ==      USART1_SR_TXE);        //判斷發送數據寄存器是否為空
  USART1_DR     =       data;                //向發送寄存器寫入數據  
}
void Uart1_Send_String(u8 *data,u8 len,u8 enter_en)
{

u8 i=0;

for(i=0;i<len;i++)
{
  Uart1_Send_Data(data[i]);
}
if(ENTER_EN          ==     enter_en )
{
  Uart1_Send_Data(0x0D);
  Uart1_Send_Data(0x0A);
}
}
void UART_Receive_Buf_Clear()
{

  Uart_Receive_len      =       0;
  Uart_Receive_Flag     =       0;
}
void Send_ADC_Value(void)
{
  Uart1_Send_String("val= ",5,ENTER_DIS);
  Uart1_Send_Data(VDD_Value1/10 +0x30);
  Uart1_Send_Data(VDD_Value1%10 +0x30);
  Uart1_Send_String("V",1,ENTER_EN);
}




#pragma vector=USART_T_TXE_vector

__interrupt void USART_TX_ISR (void)

{
  if(USART1_SR_TC==1);


}


#pragma vector=USART_R_RXNE_vector

__interrupt void USART_RX_ISR(void)

{
  u8 ch;
  if(1  ==      USART1_SR_RXNE)

  {
     Uart_Receive_Flag          |=       TRUE;
     if(0x8000    !=      (Uart_Receive_len&0x8000))
     {
        Uart_Receive_Buf[Uart_Receive_len++]        =       USART1_DR;
        if((Uart_Receive_len>=UART_RECEIVE_LEN)||(Uart_Receive_len>=Uart_Receive_Ack_len))
        {
          Uart_Receive_len     |=      0x8000;
        }
     }
     else
     {
      ch        =       USART1_DR;
     }
  }


}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲乱码国产乱码精品精的特点 | 亚洲精品免费视频 | 亚洲午夜久久久 | 99热精品在线观看 | av在线免费观看网址 | 国产精品久久久久久久白浊 | 少妇午夜一级艳片欧美精品 | 亚洲精品www | 久久久久久久一区 | 免费在线视频a | 中文字幕第二十页 | 精品1区2区3区 | 欧美视频一区二区三区 | 久久视频免费看 | 精品欧美色视频网站在线观看 | 日韩在线成人 | 日韩欧美精品 | 国内精品久久久久久影视8 最新黄色在线观看 | 久久久久久美女 | 中文精品视频 | 国产精品成人一区二区 | 日韩中文一区二区 | 超碰超碰 | 中文字幕av一区 | www日韩 | 一级做a爰片性色毛片视频停止 | 狠狠狠色丁香婷婷综合久久五月 | 欧美一区在线视频 | 中文字幕乱码一区二区三区 | 国产欧美三区 | 精品1区2区| 美女天天操| 欧美午夜精品理论片a级按摩 | 日韩视频一区二区在线 | 黑人精品xxx一区一二区 | 亚洲精品久久区二区三区蜜桃臀 | 国产成人一区二区 | 三级黄色大片网站 | 我爱操| 玖玖玖在线 | 免费观看黄 |