查看: 3416|回复: 2

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

[复制链接]

15

主题

64

帖子

2851

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2851
发表于 2023-10-29 16:13:55 | 显示全部楼层 |阅读模式
本帖最后由 libai500 于 2024-6-14 01:10 编辑

具体编程方法(手把手)
第一步 放置一个新建线程

1010.png
    如上图,放置一个新建线程,用于50mS低速信号检测。
第二步 配置线程
1020.png
    如上图,命名线程为AppKeyScan,每轮扫描空闲10mS,确保扫描速度是50mS的五倍,同时释放更多时间给其他任务。
第四步 创建两个存储数据的私有变量
1030.png
    如上图,创建变量。
1040.png
    如上图,变量为私有变量,分别命名为p00上次和p11本次。
    p00和p11是为了方便代码模式中分清中文名。应为中文命名变量再代码区中无法分辨内容。
第五步 初始阿虎PA0引脚
1050.png
    如上图,我们初始化PA0引脚为内置下拉,GPIO输入模式。准备用PAO引脚检测按键状态。
    这些初始化指令在GPIO指令组中可以找到。
第六步 读取引脚状态
1060.png
    如上图,读取引脚PA0状态,并赋值为p01。
第七步 当前状态与上一次状态进行比较
1070.png
    如上图,对当前状态与上次状态进行比较,如果当前状态与上次状态不一样,说明发生了变化。
第八步 继续判断当前状态是不是高电平
1080.png
    如上图,我们即将完成按键上下降沿检测程序。
    当引脚状态发生变化后,如果当前引脚状态是高电平,说明发生了上升沿,反之则说明发生的事下降沿。
第九步 记录本次状态
1090.png
    如上图,记录当前状态到p00,下一次循环比较会用到。就此上下降沿软件捕获程序编写完毕。
    注意,为了不影响AppKeyScan线程的循环速度,我们不能在检出判断里添加过多的执行程序,我们遵循嵌入式系统多任务原则,发消息给其他任务线程,把上下降沿的检测结果,发送到其他任务中,让其他任务根据检测结果来执行响应的任务。
1100.png
下图实现了检测结果的消息传递,将检测结果直接发送到另一个线程任务AppPlay,由AppPlay负责播报检测结果。
1110.png
上述范例工程在天问画面-范例代码-更多范例-最新项目里能搜到

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

PA0引脚按键输入触发播报和点灯
001_3.png
阅读本帖内容之前,清确认已经阅读了上述图片中的内容,即二十几个基础返利和编程手册各个章节。


测试程序(已编译好,可直接下载。运行天问Block文件夹下ASRPRP\makebin.exe。选择本bin文件即可)
ASRPRO测试程序_PA0输入系列_20231027.rar (1.46 MB, 下载次数: 39)
回复

使用道具 举报

0

主题

1

帖子

14

积分

注册会员

Rank: 2

积分
14
发表于 2023-10-30 10:58:53 | 显示全部楼层
感谢老师指导!顶
回复

使用道具 举报

0

主题

1

帖子

8

积分

注册会员

Rank: 2

积分
8
发表于 2025-6-22 22:53:31 | 显示全部楼层
基本看懂,感谢指点,不容易阿
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-9 05:22 , Processed in 0.157400 second(s), 25 queries .

Powered by Discuz!

© 2001-2025 Comsenz Inc.

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