谢大蟀智能家居

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16|回复: 0

ASRPRO_小白玩转PA0按键输入触发播报和点灯

[复制链接]

41

主题

46

帖子

162

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
162
发表于 7 天前 | 显示全部楼层 |阅读模式
具体编程方法(手把手)
第一步 放置一个新建线程


    如上图,放置一个新建线程,用于50mS低速信号检测。
第二步 配置线程

    如上图,命名线程为AppKeyScan,每轮扫描空闲10mS,确保扫描速度是50mS的五倍,同时释放更多时间给其他任务。
第四步 创建两个存储数据的私有变量

    如上图,创建变量。

    如上图,变量为私有变量,分别命名为p00上次和p11本次。
    p00和p11是为了方便代码模式中分清中文名。应为中文命名变量再代码区中无法分辨内容。
第五步 初始阿虎PA0引脚

    如上图,我们初始化PA0引脚为内置下拉,GPIO输入模式。准备用PAO引脚检测按键状态。
    这些初始化指令在GPIO指令组中可以找到。
第六步 读取引脚状态

    如上图,读取引脚PA0状态,并赋值为p01。
第七步 当前状态与上一次状态进行比较

    如上图,对当前状态与上次状态进行比较,如果当前状态与上次状态不一样,说明发生了变化。
第八步 继续判断当前状态是不是高电平

    如上图,我们即将完成按键上下降沿检测程序。
    当引脚状态发生变化后,如果当前引脚状态是高电平,说明发生了上升沿,反之则说明发生的事下降沿。
第九步 记录本次状态

    如上图,记录当前状态到p00,下一次循环比较会用到。就此上下降沿软件捕获程序编写完毕。
    注意,为了不影响AppKeyScan线程的循环速度,我们不能在检出判断里添加过多的执行程序,我们遵循嵌入式系统多任务原则,发消息给其他任务线程,把上下降沿的检测结果,发送到其他任务中,让其他任务根据检测结果来执行响应的任务。

下图实现了检测结果的消息传递,将检测结果直接发送到另一个线程任务AppPlay,由AppPlay负责播报检测结果。

上述范例工程在天问画面-范例代码-更多范例-最新项目里能搜到

(以下内容为本帖花絮,读者止步)

PA0引脚按键输入触发播报和点灯

阅读本帖内容之前,清确认已经阅读了上述图片中的内容,即二十几个基础返利和编程手册各个章节。


测试程序(已编译好,可直接下载。运行天问Block文件夹下ASRPRP\makebin.exe。选择本bin文件即可)


原工程文件在天问Block_ASRPRO设备画面_范例库_更多范例_最新项目里,搜索小白系列或同名关键字即可找到

本范例电路示意图



本范例程序讲解:
一、程序全图概述


    上图是软件工程工体布局。大致分为三列,自定义功能列,基础配置列和应用功能列。
    当前自定义功能列中,我们已经封装好了异步播报服务系列功能和引脚检测功能。
    有朋友会问,一个PA0引脚输入检测,要这么大规模阵势么?
    当然不是,工程中还包含全新的播报服务概念,这正是我们着一系列范例的热点之一:注重实战,注重辅助功能搭配。不单单是验证某功能行不行,也要考虑整体应用构架。
    对于一个图形工程来说,合理的布局,后期在实战应用设计上回事半功倍。
    因本范例是介绍引脚输入信号检测的,我们主要介绍引脚单击功能,播报服务另行介绍。
二、按键单击程序图形设计

(关于上图自定义功能函数设计技巧,另有章节介绍)
   
    如上图,功能重点就是引脚单击检测,也就是上下降沿检测。
    该循环任务,以至少100mS循环间隔不但调用引脚单击检测功能函数,捕获引脚信号的上下降沿。如果发生上升沿(即返回信息为1),播报语音上升沿。反之,播报语音下降沿。
    那么有新入门的新朋友,可能不知道为什么要检测上下降沿,什么叫上升沿,下降沿?我看下面图片。

    如上图所示,我们只需要捕获电平变化的那一刻信息。而其他时间的状态,我们不理会。
    当按键单击发生时,有两个过程,一个是上升沿(按键按下),一个是下降沿(按键抬起)。捕获到了这两个信号,就能在按键有动作时,执行需要的程序。
    有不少入门朋友只判断信号为高,还是为低,是无法锁定单击的,会导致信号重复。捕获上下降沿,能确保只有信号变化时程序才执行一次,而不是一味地因高电而执行,或一味地因低电平而执行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

QQ|手机版|谢大蟀智能家居 ( 闽ICP备18020392号-1 )

GMT+8, 2025-4-20 11:58 , Processed in 0.070957 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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