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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3335|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产一区二区三区在线观看 | 日韩av在线一区二区三区 | 欧美一区二区三区在线观看 | 久草成人 | 午夜精品视频在线观看 | 日韩精品一区二区三区免费观看 | 亚洲www.| 中文字幕一区二区三区精彩视频 | 久久精品免费看 | 中文字幕一区二区三区四区五区 | 午夜性视频 | 亚洲精品乱码久久久久久蜜桃91 | 欧美一区二区三区的 | 91在线看网站 | 久久这里只有精品首页 | 精品久久香蕉国产线看观看亚洲 | 精品国产一区二区三区性色av | 综合在线视频 | 欧美aⅴ片 | 天堂中文在线播放 | 性在线| 中文成人在线 | 天天色官网 | 日韩在线观看一区 | 91精品久久久久久久久久 | 91精品久久久| 国产精品视频久久久久久 | 欧美一区二区三区视频 | 99亚洲| 玖草资源| 中文字幕亚洲精品 | 男人的天堂一级片 | 免费观看黄a一级视频 | 日本不卡一区二区三区在线观看 | 在线视频一区二区三区 | 久久天堂网 | 成人精品国产 | 日本亚洲精品成人欧美一区 | 国产在线一区二区三区 | 亚洲欧美综合精品久久成人 | 欧美国产视频 |