「TWELITE で Lチカ」
https://qiita.com/nanbuwks/items/b9b5c16838d5d4626639
ではスクラッチビルドでミニマムプログラムを作成しました。
今回はその続きで、TWELITE からシリアルUART出力を行います。
無線通信などは行わず、先のLチカプログラムにシリアルUART出力に必要な最低限の記述のみ加えます。
「tsSerialPortSetup」「SERIAL_vInit()」を見て、シリアルポートをセットアップします。
https://sdk.twelite.info/hw-api-rifurensu/perifuraru/uart/serial-raiburari/tsserialportsetup
https://sdk.twelite.info/hw-api-rifurensu/perifuraru/uart/serial-raiburari/serial_vinit
#include <AppHardwareApi.h>
#include "utils.h"
#include "ToCoNet.h"
#include "ToCoNet_mod_prototype.h"
#include "serial.h"
#include "fprintf.h"
#define LED 12
tsFILE sSerial0Stream;
static tsSerialPortSetup sSerial0;
static void vProcessEvCore(tsEvent *pEv, teEvent eEvent, uint32 u32evarg)
{
static int counter=0;
if (eEvent == E_EVENT_TICK_TIMER) { // 4ms timer
counter++;
if ( 0 == counter % 500 ) {
vPortSetHi(LED);
vfPrintf(&sSerial0Stream, "LED High\n\r");
}
if ( 250 == counter % 500 ) {
vPortSetLo(LED);
vfPrintf(&sSerial0Stream, "LED Low\n\r");
}
}
}
void cbAppColdStart(bool_t bStart)
{
if (!bStart) {
} else {
vPortAsOutput(LED); // GPIO set
ToCoNet_Event_Register_State_Machine(vProcessEvCore); // add Event handler
// serial init
static uint8 au8SerialBuffTx[32];
static uint8 au8SerialBuffRx[16];
sSerial0.pu8SerialRxQueueBuffer = au8SerialBuffRx;
sSerial0.pu8SerialTxQueueBuffer = au8SerialBuffTx;
sSerial0.u32BaudRate = 115200;
sSerial0.u16AHI_UART_RTS_LOW = 0xffff;
sSerial0.u16AHI_UART_RTS_HIGH = 0xffff;
sSerial0.u16SerialRxQueueSize = sizeof(au8SerialBuffRx);
sSerial0.u16SerialTxQueueSize = sizeof(au8SerialBuffTx);
sSerial0.u8SerialPort = E_AHI_UART_0;
sSerial0.u8RX_FIFO_LEVEL = E_AHI_UART_FIFO_LEVEL_1;
SERIAL_vInit(&sSerial0);
sSerial0Stream.bPutChar = SERIAL_bTxChar;
sSerial0Stream.u8Device = E_AHI_UART_0;
vfPrintf(&sSerial0Stream, "Hello World!\n\r");
}
}
void cbAppWarmStart(bool_t bStart) { return; }
void cbToCoNet_vRxEvent(tsRxDataApp *psRx) { return; }
void cbToCoNet_vTxEvent(uint8 u8CbId, uint8 bStatus) { return; }
void cbToCoNet_vNwkEvent(teEvent eEvent, uint32 u32arg) { return; }
void cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap) { return; }
uint8 cbToCoNet_u8HwInt(uint32 u32DeviceId, uint32 u32ItemBitmap) { return FALSE; }
void cbToCoNet_vMain(void) { return; }
実行結果
Hello World!
LED Low
LED High
LED Low
LED High
LED Low
・
・
・