打印
[51单片机]

TWEN-ASR ONE 语音识别系列教程(3)— 软件定时器和串口使用

[复制链接]
3410|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
twen51|  楼主 | 2021-6-21 14:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
TWEN-ASR ONE 语音识别系列教程(3)— 软件定时器和串口使用
提示:作者使用 TWEN-ASR ONE V1.0开发板进行开发学习。

**目录

前言
一、软件定时器的使用与测试
1.1软件定时器使用说明
1.2软件定时器代码编写
1.3软件定时器代码分析
1.4软件定时器运行测试
1.5软件定时器小结
二、串口的使用与测试
2.1串口使用说明
2.2串口代码编写
2.3串口代码分析
2.4串口运行测试
2.5串口小结
三、总结
前言

    在程序设计里,往往离不开与时间有关的程序编写,如前面**《TWEN-ASR ONE 语音识别系列教程(2)— GPIO、ADC、PWM的使用》中的闪烁灯。闪烁的时间用到延时函数块。所以本文探讨软件定时器的使用和应用场景。上文中也使用到串口调试,串口是很常用的接口,如调试、连接串口模块等等。本文主要内容有:

软件定时器的使用和测试;
串口的使用和测试。
一、软件定时器的使用与测试

1.1软件定时器使用说明

    软件定时器与硬件定时器使用基本相同。在天问Block软件中,关于软件定时器主要有三个程序块,分别是软件定时器块、启动软件定时器块、关闭软件定时器块。下面简单介绍这三个程序块的使用。
    (1)软件定时器块。 主要设置间隔时间和运行模式,定时时间到会执行块内的程序。


图1.1 软件定时器中定时器和运行模式选择图
其中,软件定时器默认有1-8。可以单次运行或重复运行软件定时器。间隔时间以ms为单位。软件定时器可以定义很多个,也可以按字符定义。如下所示。


图1.2 软件定时器命名图
    (2)启动软件定时器块。 如果想要执行软件定时器块的程序,需要启动软件定时器。
    (3)停止软件定时器块。 如果需要关闭软件定时器,则使用停止软件定时器。


图1.3 软件定时器启动和关闭程序块图
这里需要注意的是,软件定时器的名称要一致。

1.2软件定时器代码编写

    实现程序主要是当有语音命令“开启闪烁灯”开启板载的RGB蓝灯会闪烁,当有语音命令“关闭闪烁灯”停止闪烁,并关闭板载的RGB蓝灯。

图形代码

图1.4 软件定时器测试程序图
1.3软件定时器代码分析

    软件定时器中,程序实现读P1_4的值,然后取反输出。即输出与当前电平相反的电平,从而达到闪烁的目的。关闭软件定时器时,P1_4输出低电平关闭蓝灯。不管当前蓝灯是亮或灭状态,都关闭蓝灯。


图1.5 软件定时器测试程序注释
1.4软件定时器运行测试

我:智能管家
ASR:我在
我:开启闪烁灯


图1.6 蓝灯开始闪烁图
ASR:好的,马上开启闪烁灯
我:关闭闪烁灯


图1.6 蓝灯开始闪烁图
ASR:好的,马上关闭闪烁灯
1.5软件定时器小结

    软件定时器,时间到可以执行程序块里面的程序,可以单次执行,也可以重复执行。根据实际应用场景选择。

二、串口的使用与测试

2.1串口使用说明

     板载有串口0、串口1。串口引脚是固定在P17、P20,而串口1可以设置在P0_5、P0_62_1、P2_2;P3_0、P3_1。如下图所示:


图2.1 串口0,1分布图
在天问Block软件中,串口初始化可选择串口0或串口1,波特率可选择为9600、57600、115200。一般使用会在初始化块中,使用串口设置块,如下图所示。



图2.2 串口初始化块
串口通信主要是接收数据和发送数据。串口发送数据有比较多的程序块,如下图所示。有原始输出、打印、打印(自动换行)、打印16进制数(自动换行)。



图2.3 串口输出程序块
串口接收数据相关程序块如下图所示。有读取字符串、数据可读吗、读取字符串直到设定字符、读取原始数据。


图2.4 串口输入相关程序块
串口接收数据,如果发送数据较多,接收不过来,可以使用清空缓存数据,保证收到最新数据。


图2.5 清空缓存区数据
2.2串口代码编写

    实现程序主要是串口发送0x00关闭红灯,发送非0x00数据打开红灯。

图形代码


图2.6 串口测试程序
2.3串口代码分析

    串口0初始化波特率为9600。在线程中判断是否有数据可读,有数据读取判断是否为0x00。执行相应的操作,程序具体注释如下所示。


图2.7 串口测试程序注释
2.4串口运行测试

    ASR ONE 接收到0x00,会关闭红灯,并且返回Red LED light off;接收到不是0x00,会打开红灯,并且返回Red LED light on。具体测试如下所示:


图2.8 串口发送0x00

图2.9 关闭红灯


图2.10 串口发送0xFF


图2.11 打开红灯
2.5串口小结

    串口使用还是很方便的,选择使用串口0或串口1,设置波特率就可以完成初始化工作。而发送和接收数据,可以使用相应的数据块。程序调试时,可以打印串口信息,做外围扩展常常会用到原始数据的发送和接收,在天问Block里,都有相应的程序块。开发起来效率高、使用方便。

三、总结

    串口在实际中使用非常多,,可以用于调试程序、可以扩展外围设备等等。而软件定时器用在一些定时场合。本文简单介绍了软件定时器和串口的使用,在天问Block里面有对应的程序块,使用起来非常方便。


————————————————
版权声明:本文为CSDN博主「初五霸」的原创**,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yang_zijing/article/details/118018961

使用特权

评论回复

相关帖子

沙发
twen51|  楼主 | 2021-7-2 15:27 | 只看该作者

目前天问Block正在举办庆祝建党100周年暨天问Block主题创作比赛。奖品有天问-ASR标准套件、天问51开发板、天问32核心板等,最高奖1000元现金。
参与方式:
下载(或升级)最新版天问Block(0.1.12版本),创作作品(作品视频、作品简介、作品代码截图和代码链接)根据要求上传到论坛【庆祝中国共产党成立100周年“不忘初心,牢记使命”主题创作比赛版块】(入口:http://haohaodada.com/new/bbs/forum.php?mod=forumdisplay&fid=69),审核后即可获取抽奖机会,同时评选出最好的作品,奖励1000元现金大奖。
期待大家的参加哦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

42

帖子

2

粉丝