新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM8S UART2 TX & RX

        STM8S UART2 TX & RX

        作者: 時間:2016-12-03 來源:網絡 收藏
        C語言: Codee#12198
        /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        + 實驗平臺 : ST 官方三合一套件
        + 硬件 : STM8S105S6T6C
        + 開發平臺 : IAR For STM8 1.10
        + 仿真器 : ST-Link
        + 日期 : 2010-7-23
        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
        #include "stm8s.h"

        unsignedcharRX_Words;// 接收到的數據
        unsignedcharflag;// 接收到數據標志位

        /*******************************************************************************
        * ==啟用外部晶振函數==
        *******************************************************************************/
        voidHSE_CLK_INIT(void)
        {
        CLK_DeInit();
        CLK_HSECmd(ENABLE);
        while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
        CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
        CLK_ClockSwitchCmd(ENABLE);
        CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
        }

        /*******************************************************************************
        * ==UART2初始化函數==
        * UART2_DeInit(); --> 復位串口2的寄存器值
        * UART2_Init((u32)9600, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
        --> 波特率 9600 , 8位數據位 , 1位停止位 , 無奇偶效驗 , , 發送接收使能
        * UART2_ITConfig(UART2_IT_RXNE, ENABLE); --> 使能接收中斷
        * UART2_Cmd(ENABLE); --> 使能串口2
        *******************************************************************************/
        voidUART2_INIT(void)
        {
        UART2_DeInit();
        UART2_Init((u32)9600,UART2_WORDLENGTH_8D,UART2_STOPBITS_1,UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE,UART2_MODE_TXRX_ENABLE);
        UART2_ITConfig(UART2_IT_RXNE,ENABLE);
        UART2_Cmd(ENABLE);
        }

        /*******************************************************************************
        * ==UART2_TX 發送1個字節 函數==
        * UART2_FLAG_TXE : Transmit Data Register Empty flag 串口2發送寄存器為空標志位 返回1 為空 返回0 不空
        *******************************************************************************/
        voidUart2_Send1Byte(unsignedcharTxData)
        {
        while(UART2_GetFlagStatus(UART2_FLAG_TXE)==0);
        UART2_SendData8(TxData);
        }

        /*******************************************************************************
        * ==Main函數==
        * 需要配置 stm8s.h 的相關文件
        1 使用STM8S105相關文件 “ #define STM8S105 ”
        * 需要配置 stm8s_conf.h 的相關文件
        1 使用外部晶振 要把時鐘全局變量修改成使用的晶振 “ #define HSE_VALUE ((u32) 7372800) ”
        2 配置串口2的相關初始化文件 “ #define _UART2 (1) ”
        * 不要忘記使能全局中斷!
        *******************************************************************************/
        voidmain(void)
        {
        HSE_CLK_INIT();
        UART2_INIT();
        enableInterrupts();

        while(1)
        {
        if(flag)
        {
        flag=0;
        Uart2_Send1Byte(RX_Words);// 將接收到的數據發送出去
        }
        }
        }
        /*******************************************************************************
        * ==RX 接收中斷==
        * UART2_IT_RXNE : Data Register Not Empty interrupt 接收寄存器 滿 標志位
        *******************************************************************************/
        #pragma vector=0x17
        __interruptvoidUART2_RX_IRQHandler(void)
        {
        UART2_ClearITPendingBit(UART2_IT_RXNE);// 清標志位
        RX_Words=UART2_ReceiveData8();// 把接收到的數據復制給變量
        flag=1;
        }


        關鍵詞: STM8SUART2TX&R

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 巴林右旗| 夏邑县| 寿阳县| 镶黄旗| 彭水| 岫岩| 黄石市| 肃北| 贡山| 朝阳市| 明水县| 长丰县| 临邑县| 普宁市| 勐海县| 疏勒县| 玛曲县| 岫岩| 隆昌县| 兴安县| 惠州市| 大渡口区| 仲巴县| 秦安县| 威远县| 监利县| 张家口市| 长顺县| 临安市| 台中市| 高密市| 临潭县| 鄂伦春自治旗| 大荔县| 乌海市| 织金县| 绥棱县| 太湖县| 湖北省| 沙洋县| 庄浪县|