在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 瑞薩RA0單片機(jī)連載——實(shí)現(xiàn)串口重定向之printf

            瑞薩RA0單片機(jī)連載——實(shí)現(xiàn)串口重定向之printf

            作者:lulugl 時(shí)間:2024-11-22 來源:EEPW 收藏

            1   目的

            本文引用地址:http://www.biyoush.com/article/202411/464858.htm

            的調(diào)試中,我們?nèi)粘5娜罩据敵?,通常是通過串口來實(shí)現(xiàn),而通過串口重定向來實(shí)現(xiàn)又是常規(guī)的操作之一。這次我在前面的基礎(chǔ)之上增加了 的面向?qū)ο蟮脑黾舆@項(xiàng)功能。

            2   實(shí)現(xiàn)步驟

            1.在工程中添加.c 函數(shù),并把他加入到libs的分組之中。

            1732237973236708.png

            2.在工程的設(shè)置中,打開Use MincroLIB庫。

            1732238008386481.png

            3.在.c中,添加對(duì)輸入輸出的系統(tǒng)頭文件<stdio.h>的引用,當(dāng)然由于我需要調(diào)用驅(qū)動(dòng)庫要添加<devices.h>以及<hal_data.h>的引用。

            4.重寫fputc輸出,在此函數(shù)中,我先查找Log 這個(gè)串口的驅(qū)動(dòng),如果查找到,則使用他的write 進(jìn)行串口輸出,代碼如下:

            view plaincopy to clipboardprint?

            1. int fputc(int ch, FILE *f)

            2. {

            3. (void)f;

            4. struct UartDev *pLogDevice = UartDeviceFind

            (“Log”);

            5. pLogDevice->Write(pLogDevice, (unsigned

            char*)&ch, 1);

            6. return ch;

            7. }

            5.重寫scanf 函數(shù),在這個(gè)函數(shù)中,我也一樣先查找以”Log”命名的串口,如果查找到,則使用這個(gè)驅(qū)動(dòng)的write 進(jìn)行輸出。其代碼如下:

            view plaincopy to clipboardprint?

            1. int fgetc(FILE *f)

            2. {

            3. uint8_t ch;

            4.

            5. (void)f;

            6. struct UartDev *pLogDevice = UartDeviceFind

            7. /* 啟動(dòng)接收字符 */

            8. while(pLogDevice->Read(pLogDevice,

            (unsigned char*)&ch, 1) != 1)

            9. {}

            10. /* 回顯 */

            11. {

            12. fputc(ch, &__stdout);

            13.

            14. /* 回車之后加換行 */

            15. if (ch == ‘r’)

            16. {

            17. fputc(‘n’, &__stdout);

            18. }

            19. }

            20.

            21. return (int)ch;

            22. }

            6. 驅(qū)動(dòng)設(shè)置好后,就可以在工程中使用printf 進(jìn)行串口輸出了。

            添加測(cè)試代碼如下:

            view plaincopy to clipboardprint?

            1. void led_blink(void)

            2. {

            3. uint32_t cnt;

            4. UartDevicesRegister();

            5.

            6. LedDevice *pLED = LedGetDevice();

            7. if(NULL == pLED)

            8. {

            9. printf(“Error. There is no LED device!rn”);

            10. return;

            11. }

            12. pLED->Init(pLED);

            13.

            14. while(1)

            15. {

            16. cnt++;

            17. pLED->On(1);

            18. R_BSP_SoftwareDelay(1,BSP_DELAY_

            UNITS_SECONDS);

            19. pLED->Off (1);

            20. R_BSP_SoftwareDelay(1,BSP_DELAY_

            UNITS_SECONDS);

            21. pLED->On(2);

            22. R_BSP_SoftwareDelay(1,BSP_DELAY_

            UNITS_SECONDS);

            23. pLED->Off (2);

            24. R_BSP_SoftwareDelay(1,BSP_DELAY_

            UNITS_SECONDS);

            25. printf(“run cnt %drn”,cnt);

            26.

            27. }

            28. }

            測(cè)試結(jié)果如下:

            1732238117760102.png

            3   總結(jié)

            使用面向?qū)ο笾幊蹋梢詫?shí)現(xiàn)代碼的快遞移植,當(dāng)然重寫printf 也是非常之簡(jiǎn)單。

            (本文來源于《EEPW》2024年11期)



            關(guān)鍵詞: 202411 瑞薩 RA0 單片機(jī) printf

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉