官网历程 中switch case用法不解
// Timer_A3 Interrupt Vector (TAIV) handler#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch (TAIV, 10) // Efficient switch-implementation
{
case2:break; // TACCR1 not used
case4:break; // TACCR2 not used
case 10:P1OUT ^= 0x01; // overflow
break;
}
}
这段代码switch (TAIV, 10) 这里是什么意思? IAR编译器手册中应该有说明,这是针对430中断向量的优化写法,可以生成很高效的代码。 逗号运算符 是逗号运算,这不就是固定值判断嘛,为什么要搞得这么复杂,确实不解 补充一下,二楼说的有问题。优化的写法应该是这样的:
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1_ISR(void)
{
switch (__even_in_range(TAIV, 10))
{
case 2: P1POUT ˆ= 0x04;
break;
case 4: P1POUT ˆ= 0x02;
break;
case 10: P1POUT ˆ= 0x01;
break;
}
} 以后发代码,请使用插入代码?OK? 咯耶 发表于 2014-1-24 12:13
逗号运算符
什么意思 请您解释下~ IAR 430 特有的代码。。。很好用,针对寄存器位的SWITCH语句 用于生成跳转表? error_dan 发表于 2014-1-24 15:16
用于生成跳转表?
不懂啊~ 就是TAIV是10以内的偶数时才进入switch判断 同样求解 专注XXOO三十年 发表于 2014-1-24 12:39
补充一下,二楼说的有问题。优化的写法应该是这样的:
他那个应该是封装的一个函数 然后返回1以内的偶数值吧 我没看源文件 我只是猜测 小于等于10以内的数
页:
[1]