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 因為上面這段 我有經常使用到,所以可以...