tsFILE
vfPrintf() vPutChar() で指定する出力先を定義した構造体。

メンバー

uint8
u8Device
シリアルポート (E_AHI_UART_0 または E_AHI_UART_1 を指定する)
bool_t (*bPutChar) (uint8 u8Device, uint8 u8Char)
bPutChar
出力用の関数ポインタ。SERIAL ライブラリ用には SERIAL_bTxChar() が準備されているので、これを指定する。
SERIAL_bTxChar() は、u8Char として渡されたバイトを SERIAL ライブラリ内の FIFO キューに投入します。
独自に出力関数を準備することで、UART 以外への文字列の出力にも利用できます。

サンプルコード

1
#include "serial.h"
2
#include "fprintf.h"
3
4
tsFILE sSerStream;
5
tsSerialPortSetup sSerPort;
6
7
void vSerialInit(uint32 u32Baud, tsUartOpt *pUartOpt) {
8
// initialize sSerPort
9
...
10
SERIAL_vInit(&sSerPort);
11
12
// for vfPrintf()
13
sSerStream.bPutChar = SERIAL_bTxChar;
14
sSerStream.u8Device = E_AHI_UART_0;
15
}
16
17
void vSerOut() {
18
vfPrintf(&sSerStream, "HELLO!");
19
}
20
Copied!
以下は、キャラクタ LCD の出力コードとして利用した一例です。
1
#include "serial.h"
2
#include "fprintf.h"
3
4
tsFILE sLcdStream;
5
6
// handle LCD display
7
PUBLIC bool_t LCD_bTxChar(uint8 u8Device, uint8 u8Data) {
8
int i;
9
10
switch (u8Data) {
11
case '\n':
12
...
13
}
14
15
void vInitHardware() {
16
/* Initisalise the LCD */
17
vLcdReset(3, 0);
18
19
/* register for vfPrintf() */
20
sLcdStream.bPutChar = LCD_bTxChar;
21
sLcdStream.u8Device = 0xFF;
22
}
23
24
void vSomeOutput() {
25
vfPrintf(&sLcdStream, "Hello World!\n");
26
}
Copied!
最終更新 8mo ago
リンクのコピー