根据FLASH中的标志位来进行判断是否为第一次下载。使用库函数BSR_ExportSDWord(uiCommandID)将训练好的语音模型导出存储到FLASH中进行操作,然后再调用读写FLASH函数。在进行语音识别时,首先读取FLASH将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID)函数将语音资源载入内存。在识别出命令后,执行相关动作,相关动作操作就是操作电机的正向或反向旋转同时配合延时与播放声音组合起来形成不同的动作。
避障的实现是在机器人活动期间完成的。
在机器人活动期间会播放背景声音或音乐。播放采用后台方式,使用4096Hz时基中断处理语音解码。这样可以释放大量CPU资源在前台处理其他事务。
语音播放函数流程图如图4-2所示。
图 4-2 语音播放程序流程图
在4096Hz时基中断中进行的处理流程如图4-3所示。
图 4-3 语音播放中断服务程序流程图
在播放背景音乐的同时,程序将调用超声波测距函数进行机器人前方障碍物检测。测距函数利用TimerB产生40KHz的PWM方波驱动超声波发射传感器。当接收传感器接收到回波后经过处理电路处理将引起SPCE061A的外部中断,计算从发射超声波到产生中断的时间,即可计算出目标物体的距离。测距函数流程如图4-4所示。
图 4-4 测距函数流程图