zly188 发表于 2021-1-16 17:56:16

天问Block扩展库制作详解

本帖最后由 zly188 于 2022-3-11 11:17 编辑

天问Block图形化编程非常方便,只要鼠标拖动图形指令就可以完成程序设计。图形化模块自动生成特定的C语言代码,非常方便,编程开发者梦寐以求制作属于自己的用户库。

一个库在用户界面上由这几部分组成:①是库的中文名称;②是指令图形块;③是驱动所需的头文件;④是图形块生成的代码。

其中,①②是必须的,有些库不需要自己制作头文件③就不一定有,有些图形块只是注释型的不需要生成代码也就不一定有④。
LED扩展案例
下面就以STC8中制作my_led库为例,讲解库怎么制作?图形块怎么生成。库的添加和库开发工具,通过编程界面左下角的“添加扩展”按钮进入的。点击“添加扩展“按钮后,出现下面界面:①是库封面;②库项目链接;③库的中文名称和介绍;
在”扩展“界面,顶部工具栏有“官方库”、“用户库”、“新建库”。“官方库”就是通过官方验证发布的库,编程时可以直接加载使用。“用户库”是用户自己编写的私有库,上传加载使用。“新建库”就是库开发工具。上图所示:每个库封面都有一个封面图,项目链接,中文名称和介绍。其中封面图分辨率最好设置成:262*150。
因此新建库前要规划好,准备好以下文件和内容:1.分辨率为262*150的封面图(格式jpg\png)一张(如没有图片,将用内部默认图片)。2.规划好库的中文名称,英文名称,库的介绍文字。4.规划好库里要使用的指令图形块名称,图形块名称不能与官方相同,前缀最好加上STC8_my_XXX(芯片名称+my+XXX)。
根据以上要求:规划库的中文名称为“我的LED”,英文名称为“myled_lib”,介绍文字“我的LED使用”。图形块先制作一个“打开LED”(模块名称STC8_my_ledon),程序模块内容:“打开LED”,C语言代码先不生成。适用芯片:STC8。

库封面图片文件

模块名称及各区域介绍:
点击“新建库”,可以看到生成了一个默认模版,开始我们的制作旅程:1.先修改模块名称、外观、连接方式、颜色,删除预处理代码和执行代码。本案例仅修改了模块名称,可自行按需修改颜色。需要制作其他类型的图形块时,请尝试修改外观和连接方式。
2.更改输入节点的方式:由于不需要值输入框,所以删除了值输入后从左侧列表拖入假输入模块至编辑区,然后输入文本“打开LED”,如图所示。
3.给输入节点,添加文本“打开LED”,如图所示。
4.现在点击工具栏“生成库”按钮,输入中文名称、英文名称、版本号,填写介绍,选择颜色和主板,最后上传封面图片。5. 在上图中第一步XML文件编辑中点击“编辑”,查看XML文件是否正确。
首先查看模块名称是否正确,图形块的数量是否正确(如果创建了多个图形块,目前只有一个),如果不正确,点击“导入编辑区代码”,重新生成XML,检查后点击保存。
6. 导出扩展包,扩展包以英文名称命名“myled_lib.zip”,导出成功会自动关闭“生成库”对话框,保持库开发工具窗口打开。在“天问Block 2022”的添加扩展页面,找到用户库,点击本地导入,导入刚制作完成的扩展包。 现在可以看到C代码是没有生成的。接下去我们需要生成C代码。

7. 回到库开发工具中,生成执行代码,如下图所示:在工具栏中点击复制,创建“关闭LED”图形块,修改名称为“STC8_my_ledoff”,修改文本,修改执行代码为“P4_1 = 0;”。
可以尝试导出扩展包到软件中使用,修改XML文件参照第4步。

8. 生成预处理代码,如下图所示:
拖入预处理代码图形块,选择“初始化”,在文本框中输入“P4M1&=~0x02;P4M0|=0x02;//推挽输出”。
PS:如果需要复制本图形块到“关闭LED”中,可以如上图所示选中后使用键盘快捷键Ctrl+C进行复制,然后进入“关闭LED”界面,使用键盘快捷键Ctrl+V进行进行粘贴。

最后按照第4步,重新导出扩展包,进行最终测试。重新编辑XML
测试正常使用后,我的LED扩展就完成了。

软件I2C扫描案例
库封面图片文件首先,我们编写softiic_scan.h
#ifndef __IIC_SCAN_H
#define __IIC_SCAN_H

#include "softiic.h"

#ifndefSOFTIIC_SCL
#defineSOFTIIC_SCL       P1_5
#endif

#ifndefSOFTIIC_SCL_OUT
#defineSOFTIIC_SCL_OUT       {P1M1|=0x20;P1M0|=0x20;}   //开漏输出
#endif

#ifndefSOFTIIC_SDA
#defineSOFTIIC_SDA      P1_4
#endif

#ifndefSOFTIIC_SDA_IN
#defineSOFTIIC_SDA_IN      {P1M1|=0x10;P1M0&=~0x10;}//INPUT高阻输入
#endif

#ifndefSOFTIIC_SDA_OUT
#defineSOFTIIC_SDA_OUT       {P1M1|=0x10;P1M0|=0x10;}//开漏输出
#endif

uint8 softiic_scan(uint16 addr);   //在指定地址扫描I2C设备

//========================================================================
// 描述: 在指定地址扫描I2C设备.
// 参数: addr:I2C设备地址.
// 返回: none.
//========================================================================
uint8 softiic_scan(uint16 addr)
{
    uint8 temp;
    softiic_start();                        //开始信号
    softiic_send_byte(addr*2);      //发送器件写地址
    temp=softiic_wait_ack();
    softiic_stop();
    delay(10);
    return !temp;
}

#endif
以下为图形块需要生成的代码:
宏定义
#define SOFTIIC_SCL P1_5
#define SOFTIIC_SCL_OUT {P1M1|=0x20;P1M0|=0x20;}//P1_5开漏输出
#define SOFTIIC_SDA P1_4
#define SOFTIIC_SDA_IN {P1M1|=0x10;P1M0&=~0x10;}//P1_4高阻输入
#define SOFTIIC_SDA_OUT {P1M1|=0x10;P1M0|=0x10;}//P1_4开漏输出头文件
#include "lib/softiic.h"
#include "myLib/softiic_scan.h"初始化
softiic_init();
执行代码所用函数及生成代码
uint8 softiic_scan(uint16 addr);   //在指定地址扫描I2C设备
softiic_scan(0xA2)以下为库开发工具截图:


可以看出一一对应的关系。
生成库方法与前一个扩展大同小异,需要注意的是连接方式不同了,改为左连接的形式(上图右上角预览区域)。
在生成执行代码部分,出现了引用值输入框得到的“值”(生成执行代码中红色图形块)。

最后,在点击“生成库”按钮后,XML文件编辑添加值输入框默认值,如下图所示:

现在点击工具栏“生成库”按钮,输入中文名称、英文名称、版本号,填写介绍,选择颜色和主板,最后上传头文件和封面图片。
导出扩展包,进行最终测试。测试正常使用后,我的我的扫描I2C设备地址扩展就完成了。


添加51引脚和51端口宏定义

第一步:使用51引脚和51端口的宏定义块,按照下图进行连接。


第二步:生成库,填写中文名称,英文名称等。



第三步:修改XML



插入默认引脚



生成的图形块



对应C代码

#define SOFTIIC_SCL P1_5
#define SOFTIIC_SCL_OUT {P1M1|=0x20;P1M0|=0x20;}//P1_5开漏输出
#define SOFTIIC_SDA P1_4
#define SOFTIIC_SDA_IN {P1M1|=0x10;P1M0&=~0x10;}//P1_4高阻输入
#define SOFTIIC_SDA_OUT {P1M1|=0x10;P1M0|=0x10;}//P1_4开漏输出

#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/softiic.h"

void setup()
{
   softiic_init();
}

void loop()
{

}

void main(void)
{
   setup();
   while(1){
   loop();
   }
}





导入功能介绍
为了方便库的制作,可以使用以下功能:

[*]可以使用模块-导入功能,在已有模版的基础上进行修改。
[*]可以使用导入库功能,在已有库的基础上进行修改。


导入官方库:可以查看官方制作的库,并在其基础上修改制作自己的库。
导入本地库:可以导入之前制作的库。

此处以导入本地库为例(导入官方库情况类似):
点击导入本地库,导入之前生成的库"lcdtest_lib.zip",点击生成库,可以查看配置信息。
点击查看导入库XML,可以参考编辑XML。
然后点击编辑,可以在编辑同时查看导入库XML。
有了这些功能,就可以方便的制作扩展库了。

a185980800 发表于 2021-1-17 00:34:30

牛b:sleepy:

a185980800 发表于 2021-1-17 00:35:55

睡觉明天在研究。

JLCLLH 发表于 2021-1-20 21:20:02

非常期待后边的作品

ywdwhy 发表于 2021-2-13 11:17:03

:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:lol:victory:

a185980800 发表于 2021-4-25 09:30:48

沉了,沉了。刷一下免得找不到了。

DIY小幸福 发表于 2021-4-27 11:38:37

:D:D:D:D:D:D:D:D:D:D:D:D:D:D

李哥66 发表于 2021-7-26 16:47:38

这个网站真的很有用:lol

13936553935 发表于 2021-9-18 18:46:39

优秀:handshake

zly188 发表于 2021-11-4 08:05:41

到官网下载最新版,开发库更方便了。http://twen51.com/
页: [1] 2 3
查看完整版本: 天问Block扩展库制作详解