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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲 中文 欧美 日韩 在线观看 | 草草精品| 曰韩三级| 亚洲视频免费在线观看 | 国产999精品久久久 精品三级在线观看 | 亚洲欧美日本国产 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 国产日韩欧美一区二区 | 日韩精品视频一区二区三区 | 日本一二区视频 | 亚州激情 | 91精品久久久久久久 | 国产真实精品久久二三区 | 欧美精品免费观看二区 | 国产精品久久777777 | 中文字幕亚洲精品 | 欧美在线视频二区 | 韩国成人在线视频 | 国产精品一区在线 | 午夜精品一区二区三区免费视频 | 91九色porny首页最多播放 | 亚洲一区在线日韩在线深爱 | 美女一级毛片 | 日本天天操 | 国产在线精品一区 | 成年人在线观看 | 午夜精品在线观看 | 久久精品日 | 久久r精品| 久久精品小视频 | 在线视频中文字幕 | 正在播放国产精品 | 人人澡人人射 | 不卡一二区 | 另类视频在线 | 欧美一级免费黄色片 | 一区2区| 欧美日一区二区 | 91精品久久久久久久久久入口 | 亚洲色图综合 | 日韩一区二区三区av |