• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > stm8s開發(三) UART的使用:串口通信!

    stm8s開發(三) UART的使用:串口通信!

    作者: 時間:2017-09-14 來源:網絡 收藏

      串口通信是單片機學習的一個最基本、最重要的功能之一。串口通信可以間接的當做調試接口使用,實現單片機與電腦之間的通信。當然可以與一些模塊(比如藍牙、wifi)通信,也可以作為和其他單片機通信的工具。

    本文引用地址:http://www.czjhyjcfj.com/article/201709/364351.htm

      STM8S的通用異步收發器()主要特性:

      ● 全雙工的,異步通信

      ● 可編程數據字長度(8位或9位)

      ● 可配置的停止位-支持1或2個停止位

      一般的,我們使用串口通信主要是關心幾點參數:波特率、停止位、奇偶校驗位。

      其次就是如何發送、如何接收數據,這里介紹的使用阻塞式發送數據、中斷方式接收數據。

      以下代碼是初始化串口,參數為:115200 1停止位 無校驗位

      void Init_1(void)

      {

      CLK_PCKENR1 |= 0X04; //使能USART1時鐘

      1_CR1=0x00;

      UART1_CR2=0x00;

      UART1_CR3=0x00;

      // 必須先寫BRR2

      // 例如對于波特率位115200時,分頻系數=16000000/115200=139

      // 對應的十六進制數為008B,BBR1=08,BBR2=0B

      UART1_BRR2=0x0B;

      UART1_BRR1=0x08;

      UART1_CR2=0x2c;//允許接收,發送,開接收中斷

      }

      波特率設置需要通過計算,STM8S的默認主頻是16M,得到寫入寄存器的數為139。注意,這里需要先寫入BRR2再寫入BRR1,且格式特殊:

      BRR1應夾在BRR2之間!(需要修改波特率需要好好理解)

      編程手冊描述如下:

        

      阻塞式發送函數(發送一個字節)如下:

      void SendChar(u8 dat)

      {

      while((UART1_SR & 0x80)==0x00);

      UART1_DR = dat;

      }

      只需要將數據加載到UART1_DR寄存器里就算是OK。

      終端接收數據函數如下:

      //將收到的數據再發送出去

      #pragma vector= UART1_R_OR_vector//0x19

      __interrupt void UART1_R_OR_IRQHandler(void)

      {

      u8 res;

      res = UART1_DR;

      return;

      }

      使用中斷需要聲明中斷函數入口,并且指定中斷表序號(串口1接收中斷向量為0x19):

      #pragma vector= UART1_R_OR_vector//0x19

      __interrupt void UART1_R_OR_IRQHandler(void)

      只要串口接收到一個字節的數據就會立即進入此函數,數據存放在UART1_DR寄存器中。

      注意:要使用中斷這個功能需要在mian函數中加入開啟中斷語句:

      _RIM;

      附上在IAR環境下的項目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代碼。

      http://download.csdn.net/detail/devintt/9454188



    關鍵詞: stm8s UART

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 招远市| 汾阳市| 广水市| 常山县| 民丰县| 阿图什市| 霍邱县| 平阳县| 堆龙德庆县| 柘荣县| 南华县| 湘潭市| 肇庆市| 蒲城县| 南投县| 崇义县| 鹿邑县| 恭城| 张北县| 西乌珠穆沁旗| 黑水县| 岱山县| 建湖县| 红河县| 鹤峰县| 疏附县| 安化县| 中卫市| 襄樊市| 布拖县| 安平县| 卓资县| 安阳县| 祁阳县| 隆德县| 镇赉县| 罗平县| 新邵县| 耒阳市| 四子王旗| 中西区|