STM8串列埠列印除錯資訊

2021-08-10 12:18:24 字數 1695 閱讀 7970

static

void

uart1sendmsg(char

msg,

uint16_t

length)}"`

void

myprintfascii(char

*msg)

}void

myprintfint8(uint8_t

msg,

intlength)

}intlength=m;

for(n

=intlength

-1;n >=

0;n--)

myprintfascii("

");}

}void

myprintfint16(uint16_t

msg,

intlength)

}intlength=m;

for(n

=intlength

-1;n >=

0;n--)

myprintfascii("\r\n");}}

void

myprintfint32(uint32_t

msg,

intlength)

}intlength=m;

for(n

=intlength

-1;n >=

0;n--)

myprintfascii("

");}

}

上述方法相對笨一點,而且無法列印負數,浮點數。下面直接使用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

getchar_prototype

main.c 主要輸出部分:

#include 

void main(void)

}

STM32串列埠除錯

改為串列埠中斷接收方式,發現也只能進入一次接收中斷函式,把開啟中斷函式放入接收中斷函式內,可以連續進入接收中斷函式了,但是資料丟失的問題仍然存在,又經過一番除錯發現將處理資料函式從接收中斷函式中取出,問題就解決了。然而採用串列埠dma方式時,將處理函式從中斷函式中取出,讀取的資料還是錯誤的。唉,現在...

STM8 串列埠資料一直卡在讀中斷

stm8 uart1 開啟了讀中斷,初始化 如下 配置串列埠引數為 波特率115200,8位資料位,1位停止位,無校驗,禁止同步傳輸,允許接收傳送 uart1 init u32 115200,uart1 wordlength 8d,uart1 stopbits 1,uart1 parity no,u...

串列埠列印除錯資訊(乾貨)

上 這裡用到的是hal庫,標準庫改以下函式就行。include intfputc int ch,file f hal uart transmit huart1,temp,1,5 huart1需要根據實際配置 return ch int fgetc file f 因為上面這段 我有經常使用到,所以可以...