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

Posted 初五霸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TWEN-ASR ONE 语音识别系列教程--- 软件定时器和串口使用相关的知识,希望对你有一定的参考价值。

TWEN-ASR ONE 语音识别系列教程(3)— 软件定时器和串口使用
提示:作者使用 TWEN-ASR ONE V1.0开发板进行开发学习。


文章目录


前言

    在程序设计里,往往离不开与时间有关的程序编写,如前面文章《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_6;P2_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里面有对应的程序块,使用起来非常方便。


以上是关于TWEN-ASR ONE 语音识别系列教程--- 软件定时器和串口使用的主要内容,如果未能解决你的问题,请参考以下文章

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

TWEN-ASR ONE 语音识别系列教程--- GPIOADCPWM的使用

TWEN-ASR ONE 语音识别系列教程--- GPIOADCPWM的使用

TWEN-ASR ONE 语音识别系列教程--- GPIOADCPWM的使用

TWEN-ASR ONE 语音识别系列教程---多线程与消息队列使用

TWEN-ASR ONE 语音识别系列教程---多线程与消息队列使用