因为我水,所以遇到一个很“奇怪”的问题,高手来相助
ta0r_fliter 是int 型,TA0R是unsigned short int 型,ta0r_fliter的初值是0,赋值都是TA0R赋给它
int ta0r_fliter=0;
从图中可见,此时TA0R是1,ta0r_fliter是由unsigned short int赋值给的,不会小于0, int 自动类型匹配转成 unsigned short int 的话 也是非负的。
那么TA0R-ta0r_fliter 怎么满足 >2的条件而进入if里面去呢? 没搞明白。
编译环境是:IAR 硬件环境是:MSP430 5438a
[解决办法]
unsigned short int ,非负
TA0R改成 int
[解决办法]
一个负数,强制转换成unsigned,会很大。
if(TA0R〉a0r_fliter + 2)。
[解决办法]
无符号的判断指令和带符号的判断指令是不一样的