2019-12-16 22:37发布
not_at_all 发表于 2016-1-31 22:48 最直接的方法就是把AD数值加上0xFFFFFF,转换为无符号的数再滤波。
gamalot 发表于 2016-1-31 23:16 做个判断就行了,假设是24位ADC
zouzhichao 发表于 2016-1-31 23:31 借你的代码出个优化简洁版本: int32_t code; code = Adc_read_data();
最多设置5个标签!
不对吧? 加上0xFFFFF对补码来说相当于-1
应当是:转成整数(取反+1) 0-7FFFFF表示负数,800000表示0, 800001-FFFFFF表示正数
- int32_t code;
- code = Adc_read_data();
- if ((code & 0x800000) != 0)
- {
- code -= 0x1000000;
- }
- ......
复制代码借你的代码出个优化简洁版本:
int32_t code;
code = Adc_read_data();
code -= (code & 0x800000) << 1;
你这个实际上就是最常用的方法,最简洁高效,缺点和就是更加不够直观
一周热门 更多>