硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2757|回复: 3
收起左侧

刷新LED状态灯的问题

[复制链接]

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2016-10-17 16:13:57 | 显示全部楼层 |阅读模式
应用程序中所有的LED灯的输出状态都存储在一个数组中,程序需要更新输出的时候就更新这个数组中的内容,然后程序定期依照数组中的内容刷新LED输出状态,那么问题来了,如果当前某个LED已经是输出状态,该怎么刷新呢?有两种方案;
方案1:直接再写一次响应的输出寄存器:
方案2:先读一下输出寄存器,如果和待更新的状态不一致的情况下再写输出寄存器;
内部的总线矩阵怎么读写不太懂,但感觉方案2好像更合理点儿,大家觉得呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2016-10-18 10:06:20 | 显示全部楼层
是否可以每次输出的改变弄成输出完毕一轮后,自动更新。

这个就是好比STM32定时器的某些寄存器,你可以设置立即更新寄存器的数值,也可以本次周期结束后再更新。
回复

使用道具 举报

4

主题

65

回帖

77

积分

初级会员

积分
77
发表于 2016-10-18 10:28:40 | 显示全部楼层
其实我以前也考虑过这个问题,比如,某个管脚在某个条件下置1,是达到条件后只置一次1呢(之后判断已经置过1就不再重新置),还是达到条件后一直刷置1呢(状态机轮询,因为你要不断判断当前条件)。后面想想真是瞎操心,管脚又刷不坏,去判断还浪费时间,不如简单粗暴直接刷
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2016-10-19 09:39:17 | 显示全部楼层
刷新LED的程序既可以被程序0.5S循环调用,也可以在1MS调度钩子函数中立即调用,因为通信灯的响应速度得快。其它的一些状态指示灯,晚个0.5S其实也没大碍;
从前资源紧张的8051时代,汇编编程“抠门”惯了,总想着如何能最大限度的优化系统资源的利用率。总感觉RAM读的速度比写的速度肯定快,但再加上if判断之后的总时间和直接写寄存器相比,到底哪个时间更快点儿呢?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 05:16 , Processed in 0.322407 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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