UART#
基本信息#
起草日期: 2020-01-14
设计人员: chenxuuu
为什么需要Uart#
与外部设备收发数据进行通信
设计思路和边界#
管理并抽象Uart的C API, 提供一套Lua API供用户代码调用
C API(平台层)#
//初始化配置串口各项参数,并打开串口
//成功返回0
int8_t luat_uart_setup(luat_uart_t* uart);
//关闭串口,成功返回0
uint8_t luat_uart_close(uint8_t uartid);
//手动读取缓存中的串口数据
uint32_t luat_uart_read(uint8_t uartid, uint8_t* buffer, uint32_t length);
//发送串口数据
uint32_t luat_uart_write(uint8_t uartid, uint8_t* data, uint32_t length);
Lua API#
常量#
--校验位
uart.Odd
uart.Even
uart.None
--高低位顺序
uart.LSB
uart.MSB
用例#
local uartid = 1
local maxBuffer = 4*100
local result = uart.setup(
uartid,--串口id
115200,--波特率
8,--数据位
1,--停止位
uart.None,--校验位
uart.LSB,--高低位顺序
maxBuffer,--缓冲区大小
function ()--接收回调
local str = uart.read(uartid,maxBuffer)
print("uart","receive:"..str)
end,
function ()--发送完成回调
print("uart","send ok")
end
)
if result ~= 0 then--返回值为0,表示打开成功
print("uart open error",result)
end
--发数据
uart.write(uartid,"test")
--轮询方式,和回调方式二选一来用
sys.taskInit(function ()
while true do
local data = uart.read(uartid,maxBuffer)
if data:len() > 0 then
print(data)
end
sys.wait(100)--不阻塞的延时函数
end
end)