硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1167|回复: 6
收起左侧

[Lua] H7-TOOL的LUA实现的RTC+微秒级时间戳获取方法

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-11-18 11:54:11 | 显示全部楼层 |阅读模式


代码:
[Lua] 纯文本查看 复制代码
local rtc_buf
local us
local Hour
local Min
local Sec

function printf(...)                   
    print(string.format(...))                   
end


us = get_runtime_us()

while(1)
do

rtc_buf = read_clock()

Hour = tonumber(string.byte(rtc_buf,5,5))
Min = tonumber(string.byte(rtc_buf,6,6))
Sec = tonumber(string.byte(rtc_buf,7,7))

s_BeginRTCTime = (Hour * 3600 + Min * 60 + Sec) * 1000000

total_time = s_BeginRTCTime  + check_runtime_us(us)

printf("%s:%06d", os.date("系统运行时间     = %H:%M:%S", total_time//1000000), total_time%1000000)

delayms(100)

end



image.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2022-11-18 13:17:10 | 显示全部楼层
改进版后,最终版:

[Lua] 纯文本查看 复制代码
local us
local diffus
local time


function printf(...)                   
    print(string.format(...))                   
end


us = get_runtime_us()
time = os.time()

while(1)
do

diffus = check_runtime_us(us)

printf("%s:%06d", os.date("系统运行时间     = %H:%M:%S", time+diffus//1000000), diffus%1000000)

delayms(100)

end

image.png


回复

使用道具 举报

5

主题

97

回帖

112

积分

初级会员

积分
112
发表于 2022-11-18 13:44:07 | 显示全部楼层
eric2013 发表于 2022-11-18 13:17
改进版:

[mw_shl_code=lua,true]local rtc_buf

你这个是有问题的。需要把os.time()保存下来。不然两个时钟都在同时跑。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2022-11-18 14:01:20 | 显示全部楼层
leng_qian 发表于 2022-11-18 13:44
你这个是有问题的。需要把os.time()保存下来。不然两个时钟都在同时跑。

已经修正,测试完,忘了改回来了。
回复

使用道具 举报

5

主题

97

回帖

112

积分

初级会员

积分
112
发表于 2022-11-18 14:06:02 | 显示全部楼层
eric2013 发表于 2022-11-18 14:01
已经修正,测试完,忘了改回来了。

非常完美。这几天考虑做个记录仪。现在还有个问题。LUA有没有按键的api。我想做个简单的界面选择一下波特率。不然使用起来很不方便。
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2022-11-18 16:16:39 | 显示全部楼层
leng_qian 发表于 2022-11-18 14:06
非常完美。这几天考虑做个记录仪。现在还有个问题。LUA有没有按键的api。我想做个简单的界面选择一下波特 ...

参考这个例子, 可以读取按键。 image.png

get_key() 可读取键值

[C] 纯文本查看 复制代码
beep()
print("请按键,长按c退出")
while(1)
do
  k = get_key()
  if (k > 0) then
    print(k)
  end
end


通过PC界面,执行lua程序,可打印按键键值
支持 s键按下、弹起、长按、长按弹起、 c键按下、c键弹起。  C键长按不支持了(用于退出lua程序)

回复

使用道具 举报

5

主题

97

回帖

112

积分

初级会员

积分
112
发表于 2022-11-18 16:19:29 | 显示全部楼层
armfly 发表于 2022-11-18 16:16
参考这个例子, 可以读取按键。

get_key() 可读取键值

??????例子呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 02:34 , Processed in 0.198651 second(s), 36 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表