<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

1   目的

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

的調試中,我們日常的日志輸出,通常是通過(guò)串口來(lái)實(shí)現,而通過(guò)串口重定向來(lái)實(shí)現又是常規的操作之一。這次我在前面的基礎之上增加了 的面向對象的增加這項功能。

2   實(shí)現步驟

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

1732237973236708.png

2.在工程的設置中,打開(kāi)Use MincroLIB庫。

1732238008386481.png

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

4.重寫(xiě)fputc輸出,在此函數中,我先查找Log 這個(gè)串口的驅動(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.重寫(xiě)scanf 函數,在這個(gè)函數中,我也一樣先查找以”Log”命名的串口,如果查找到,則使用這個(gè)驅動(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. /* 回車(chē)之后加換行 */

15. if (ch == ‘r’)

16. {

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

18. }

19. }

20.

21. return (int)ch;

22. }

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

添加測試代碼如下:

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. }

測試結果如下:

1732238117760102.png

3   總結

使用面向對象之編程,可以實(shí)現代碼的快遞移植,當然重寫(xiě)printf 也是非常之簡(jiǎn)單。

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



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>