查看: 926|回复: 0

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

[复制链接]

7

主题

8

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2021-6-21 13:27:37 | 显示全部楼层 |阅读模式
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)软件定时器块。 主要设置间隔时间和运行模式,定时时间到会执行块内的程序。
20210618113624341.png

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

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

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

1.2软件定时器代码编写

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

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

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

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

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

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

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

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

二、串口的使用与测试

2.1串口使用说明

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

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

20210618164529244.png

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

20210618163559561.png

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

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

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

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

图形代码
20210619120308783.png

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

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

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

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

图2.8 串口发送0x00
20210619120233285.png
图2.9 关闭红灯
20210619115730557.png

图2.10 串口发送0xFF

20210619120119475.png
图2.11 打开红灯
2.5串口小结

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

三、总结

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


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

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-4-26 03:20 , Processed in 0.324431 second(s), 33 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

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