硬汉嵌入式论坛

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

[LUA教程] H7-TOOL的LUA小程序教程第16期:脉冲测量,4路PWM,多路GPIO和波形打印(2024-10-25, 更新完毕)

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115455
QQ
发表于 2024-10-24 01:50:01 | 显示全部楼层 |阅读模式
LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。

争取2.27版本固件发布前,H7-TOOL的LUA API手册同步上线


简介

脉冲测量,4路PWM,多路GPIO可以在上位机端设置,也可以显示屏端设置

详细使用说明可以看在线或者离线操作说明手册:https://www.armbbs.cn/forum.php?mod=viewthread&tid=95373

2345.png

用到的D0 -D9引脚是指的这几个引脚:

注意TVCC电平决定D0 - D9电平范围,支持1.2V - 5.0V

23.png

LUA函数说明:

1、PMW

lua 接口函数  gpio_pwm_out(pin, freq, duty)
   --pin : 端口号,0、1、3、4
   --freq : 频率,Hz单位,整数
   --duty :占空比,百分比,0 - 100.0%
   --推挽输出,电平由TVCC电压决定(可设置)   --四路共用的一个TIM,因此频率必须相同。占空比可以不同

函数用法:
    gpio_pwm_out(0, 1000, 50.00)    --D0口输出1KHz,占空比50.00%的方波
    gpio_pwm_out(1, 1000, 40.00)    --D1口输出1KHz,占空比40.00%的方波
    gpio_pwm_out(3, 1000, 30.00)    --D3口输出1KHz,占空比30.00%的方波
    gpio_pwm_out(4, 1000, 10.00)    --D4口输出1KHz,占空比10.00%的方波


    gpio_pwm_out(0, 0, 0)       --D0口PWM关闭,输出0电平
    gpio_pwm_out(1, 0, 0)       --D1口PWM关闭,输出0电平
    gpio_pwm_out(3, 0, 100)    --D3口PWM关闭,输出1电平
    gpio_pwm_out(4, 0, 100)    --D4口PWM关闭,输出1电平


    set_tvcc(3.30)  --设置电平为3.3V

实际测试代码:

[Lua] 纯文本查看 复制代码
gpio_pwm_out(0, 1000, 50.00)    --D0口输出1KHz,占空比50.00%的方波
gpio_pwm_out(1, 1000, 40.00)    --D1口输出1KHz,占空比40.00%的方波
gpio_pwm_out(3, 1000, 30.00)    --D3口输出1KHz,占空比30.00%的方波
gpio_pwm_out(4, 1000, 10.00)    --D4口输出1KHz,占空比10.00%的方波


set_tvcc(3.30)  --设置电平为3.3V

print("测试PWM输出")


1234.png

示波器测试D3和D4的输出效果:

234.png

2、GPIO

GPIO的设置选项比较多,推荐直接使用这里的LUA小助手生成配置比较方便,比如配置D2输出高电平

1.png

配置D2输出:
12.png

配置输出高电平:
23456.png

测试代码:
[Lua] 纯文本查看 复制代码
gpio_cfg(2, 1) --配置模式D2 = 1-GPIO_OUT
gpio_write(2, 1) --设置输出D2 = 1

set_tvcc(3.30)  --设置电平为3.3V

print("测试D2输出高电平")



1.png

示波器测量D2输出高电平

2.png

3、脉冲测量

H7-TOOL 的D1接口,可以测量输入脉冲的频率、占空比、个数。

下面是 lua程序用法:
[C] 纯文本查看 复制代码
m_init("DETPULSE")  --进入D1测量脉冲模式   
count, freq, duty = m_read("DETPULSE") --返回脉冲个数(整数)、频率(Hz 浮点数)、占空比(% 浮点数)
m_write("DETPULSE", 0,0,0)  --清零脉冲个数、频率、占空比
m_uninit("DETPULSE")  --退出D1测量脉冲模式 


比如我们这里使用D1端口测量1KHz的脉冲信号。直接使用TOOL的信号发生器功能输出即可,峰峰值3.3V,直流偏置1.65, 频率1KHz

23457.png

测试代码:

[Lua] 纯文本查看 复制代码
m_init("DETPULSE")  --进入D1测量脉冲模式  

set_tvcc(3.30)  --设置电平为3.3V

print("测试D2输出高电平")

for i = 1, 10, 1 do

  count, freq, duty = m_read("DETPULSE") --返回脉冲个数(整数)、频率(Hz 浮点数)、占空比(% 浮点数)
  print(string.format("脉冲数:%d, 频率:%f, 占空比:%f", count, freq, duty))
  delayms(1000)

end

m_uninit("DETPULSE")  --退出D1测量脉冲模式


实际效果:

12.png

4、波形打印

封装了一个 print_wave,方便大家将采集的数据以波形方式打印出来。使用比较简单,比如我们要测试tan函数:

[Lua] 纯文本查看 复制代码
for j=-10, 10, 0.1 do                                   
    s = string.format("%f", math.tan(j)) -- 转换成字符格式
    print(s)                                   
    print_wave(s)
    delayms(20)                                   
end


2345.png

又比如打印三路,就是%f, %f,%f

[Lua] 纯文本查看 复制代码
for j=-10, 10, 0.1 do                                   
    s = string.format("%f,%f,%f", math.tan(j),math.tan(j)/2,math.tan(j)/4) -- 转换成字符格式
    print(s)                                   
    print_wave(s)
    delayms(20)                                   
end


动态效果:

IMHEX2.gif
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115455
QQ
 楼主| 发表于 2024-10-25 00:03:02 | 显示全部楼层
更新完毕。
回复

使用道具 举报

1

主题

144

回帖

147

积分

初级会员

积分
147
发表于 2024-10-25 07:32:46 | 显示全部楼层
白哥,Lua 小程序教程快要连载结束了吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115455
QQ
 楼主| 发表于 2024-10-25 08:43:11 | 显示全部楼层
www2205290064 发表于 2024-10-25 07:32
白哥,Lua 小程序教程快要连载结束了吧?

还有很多,有些LUA函数做教程有些麻烦,准备搁置下。

先把好做的都做了,发布首版LUA API手册
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 19:27 , Processed in 0.266907 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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