【发布时间】:2019-10-28 11:41:55
【问题描述】:
我正在尝试实现一个具有以下功能的程序。
SPI-Master 向 SPI-Slave 发送 3 个字节的数据。对于这些数据字节的某个值,将调用某些函数。例如
FF FF FF调用函数A,FF FF FE调用函数B等等。
一种可能的解决方案可能是使用 switch case 语句,但是切换每个可能的情况会太长。有没有其他方法可以做到这一点?
例如,最后一个数据字节必须设置 PWM 占空比。
10 = 0000 1010
20 = 0001 0100
30 = 0001 1110
40 = 0010 1000
50 = 0011 0010
60 = 0011 1100
70 = 0100 0110
80 = 0101 0000
90 = 0101 1010
从机接收最后一个字节,并且对于每种情况,它都必须设置占空比。第二个字节确定预分频器。例如:
0000 00001 0000 1010将预分频器设置为1,将占空比设置为100000 00010 0000 1010将预分频器设置为8,将占空比设置为10
等等。
所以可能有许多不同的组合,处理所有可能情况的最佳方法是什么?
【问题讨论】:
-
没有足够的信息来回答。有哪些可能性?例如,如果它们只是两个
if语句就足够了。如果有模式,您可以使用按位运算符。帮助我们,以便我们为您提供帮助。 -
为什么会“太长”?您必须处理每种情况,因此任何处理的长度都是 O(N)。 (即:在其他情况下的数量)。
-
请解释“每种可能的情况”。那里有多少?格式是什么?
-
如果可能的话,您能否提供一些您目前拥有的代码?
-
根据格式,您可以使用掩码来获取相关位并为这些(现在有限)数量的情况使用开关/大小写。
标签: c