91视频丝瓜-91视频完整版高清-91视频网-91视频网店-91视频网或将从此无大神-91视频网入口

您好,歡迎訪問上海現易電子元器件有限公司網站!

021-51870898
021-51870898   18019251567
4新聞資訊
您的位置: 首頁 ->  新聞資訊 -> 單片機

?STM8串口打印調試信息

文章出處:單片機 責任編輯:上海現易電子元器件有限公司 發表時間:2018-05-20

API函數


static void uart1SendMsg(char msg[], uint16_t length)

{

       uint16_t i;


    for (i =0 ;i < length;i++)

    {

        UART1_SendData8(msg[i]);

        while(UART1_GetFlagStatus(UART1_FLAG_TC) == RESET);

    }

}

"`

void myPrintfAscii(char *msg)

{

    while((*msg) != '\0')

    {

        uart1SendMsg(msg, 1);

        msg++;

    }

}


void myPrintfInt8(uint8_t msg[], int length)

{

    char int2Ascii[64];

    uint16_t i, m, intLength;

    int n;

    long temp;


    for (i = 0;i < length;i++)

    {

        m = 0;

        temp = msg[i];

        while(m <= 64)

        {

            int2Ascii[m++] = temp % 10;

            temp /= 10;

            if (0 == temp)

            {

                break;

            }

        }

        intLength = m;

        for (n = intLength - 1;n >= 0;n--)

        {

            int2Ascii[n] += '0';

            uart1SendMsg(int2Ascii + n, 1);

        }

        myPrintfAscii(" ");

    }

}


void myPrintfInt16(uint16_t msg[], int length)

{

    char int2Ascii[64];

    uint16_t i, m, intLength;

    int n;

    long temp;


    for (i = 0;i < length;i++)

    {

        m = 0;

        temp = msg[i];

        while(m <= 64)

        {

            int2Ascii[m++] = temp % 10;

            temp /= 10;

            if (0 == temp)

            {

                break;

            }

        }

        intLength = m;

        for (n = intLength - 1;n >= 0;n--)

        {

            int2Ascii[n] += '0';

            uart1SendMsg(int2Ascii + n, 1);

        }


        myPrintfAscii("\r\n");

    }

}


void myPrintfInt32(uint32_t msg[], int length)

{

    char int2Ascii[64];

    uint16_t i, m, intLength;

    int n;

    long temp;


    for (i = 0;i < length;i++)

    {

        m = 0;

        temp = msg[i];

        while(m <= 64)

        {

            int2Ascii[m++] = temp % 10;

            temp /= 10;

            if (0 == temp)

            {

                break;

            }

        }

        intLength = m;

        for (n = intLength - 1;n >= 0;n--)

        {

            int2Ascii[n] += '0';

            uart1SendMsg(int2Ascii + n, 1);

        }

        myPrintfAscii(" ");

    }

}


上述方法相對笨一點,而且無法打印負數,浮點數。下面直接使用printf標準輸入輸出函數,將調試信息串口打印出來。


printf 函數重映射


使用printf函數將調試信息用串口打印出來,首先在有printf函數的C文件下包含 #include ,其次將printf函數重定向串口輸出1, 參考網址1。貼代碼:


重映射代碼,myPrintf.c


#include "stm8s.h"

#include

/*

 由于不同的編譯器 putcha 和 getchar 形參和返回值略有不同。

 因此此處采用宏定義的方式區別。

 _RAISONANCE_ 和 _COSMIC_ 這2個宏是由編譯器自動添加的預編譯宏

*/

#ifdef _RAISONANCE_

 #define PUTCHAR_PROTOTYPE int putchar (char c)

 #define GETCHAR_PROTOTYPE int getchar (void)

#elif defined (_COSMIC_)

 #define PUTCHAR_PROTOTYPE char putchar (char c)

 #define GETCHAR_PROTOTYPE char getchar (void)

#else /* _IAR_ */

 #define PUTCHAR_PROTOTYPE int putchar (int c)

 #define GETCHAR_PROTOTYPE int getchar (void)

#endif /* _RAISONANCE_ */



PUTCHAR_PROTOTYPE

{

 /* 發送一個字符 c 到UART1 */

 UART1_SendData8(c);

 /* 等待發送完畢 */

 while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET);

 return (c);

}



GETCHAR_PROTOTYPE

{

 #ifdef _COSMIC_

  char c = 0;

 #else

  int c = 0;

 #endif

 /* 等待新數據到達  */

 while (UART1_GetFlagStatus(UART1_FLAG_RXNE) == RESET);

 /* 讀取數據寄存器 */

 c = UART1_ReceiveData8();

 return (c);

}


main.c 主要輸出部分:


#include

void main(void)

{       

    myUart1Init (115200);


    printf ("STM8S Start.\r\n");

    while(1)

    {   

    }


}


上海現易電子元器件有限公司 版權所有 未經授權禁止復制或鏡像

CopyRight 2020-2025 www.urqm.cn All rights reserved   滬ICP備2020031792號

友情鏈接:

電話

易經理

18019251567

微信

易經理

易經理

頂部

咨詢
主站蜘蛛池模板: 国产精品久久久久国产精品三级 | 高潮无遮挡成人A片在线看 高辣H文黄暴糙汉文H | xxxww日本| 日本娇小xxxxhd | 日韩精品一区在线观看 | 一级黄色a | 女人被老外躁得好爽 | 少妇高潮灌满白浆毛片免费看 | 久久视频在线视频观看 99 | 日本黄色成人 | 免费看国产黄线在线观看 | 免费不卡视频一卡二卡 | 免费无码又爽又刺激网站直播 | 亚洲国产精品自在在线观看 | 亚洲 欧美 变态 卡通 自拍 | 91情侣在线 | 中文字幕理伦电影免费 | 啊快进去好深用力啊使劲 | 都市激情综合网 | 香港韩国三级日本三级 | 青青草大香焦在线综合视频 | 波多野结衣中文在线观看 | 成人深夜视频在线观看 | 人人牛牛| 免费看成人做爰片 | 在线免费成人电影 | 国产欧美另类久久久精品免费 | 天天操天天做 | 60歳の熟女セックス | 免费人成在线观看69式小视频 | 欧洲免费看片尺码大 | 忘忧草日本在线社区WWW电影 | 制服丝袜中文字幕在线 | 98在线福利网 | 日本免费观看的视频在线 | 国产99在线 | 欧美视频一区在线观看 | 亚洲精品中文字幕无码A片蜜桃 | 99国模沟沟茂密的黑森林 | 乱码一二三乱码又大又粗 | 青草青草久热国产精品 |