unsigned int + unsigned long int 输出结果异常
ADC 采样,采3次累加后取平均,用uart 传递过程数据 发现:1. 首次传输unsigned long int (TotalData),此时该数据应为0,实际第3,4字节传递的是别的数据。
2. 第2次累加后unsigned long int (TotalData)原意为第一次累加后的值,实际值的高2字节也不对。
请问C语言高手
1. unsinged Int + unsigned Long Int 相加需要强制转换么?
2. 第3,4字节高位为什么会出现奇怪的数据?
int是几位long是几位? 建议发送多个数据之前先发一个固定的帧头,如 AA 55
如果TotalData第一次应当为0却不为0,则在函数开头定义变量之后马上发出来看看. stm32的int是32位 c8051f,sizeof int 2位,long4位 建议把uart发送的那几个函数也贴过来看看 t3486784401 发表于 2019-8-17 02:43
建议把uart发送的那几个函数也贴过来看看
Uart 的来了
怀疑 KEIL 的局部堆栈有猫饼!把 ADS8685_Reads 里边那几个局部变量前边加 static 搞一下,一般能解决。
再解决不了你需要 sizeof(TotalData) 看一下是几了 STM32 这种32位系统,long int跟int的位宽是一样的。都是32位。想用64位了,用 long long int。或者头文件定义的uint64_t 是8051F340 ad是几位的? 我有个习惯,2个不同类型的数据做加减乘除等等计算,都会把比较长的那个放前面,如果有浮点数参与,可能的话,比如加和乘,都会把浮点数变量放前面,有点强迫症哈,不过这样可以减少出错概率,特别是有时候,程序运行到某个特殊点才会出现的问题。
页:
[1]