在单片机中,有这样的情况出现,例如
uint32_t count;
count = time_data * 10;//time_data类型为uint16_t的故最大值为65535
//当变量time_data =10000;时经过上面表达式运算结果将会异常。
经过调试所得,把time_data类型更改为uint32_t即可。
通过调试分析发现,在我的51单片机,keil5,在运行上述公式的时候首先运行time_data *10 单片机好像把这个结果存放在变量time_data中了,由于计数结果超出uint16_t范围故在将结果赋值给count将会得到异常的数据。