- 变量类型错误导致死循环
for (uint8_t index = 0; index < 512; index++)
{
RcvBuffer[index] = 0;
}
这段代码的作用在于清除BUFFER区的数据,但是由于uint8_t类型变量的取值范围为0~255,for循环的判断条件永远满足,所以这个地方陷入了无限循环,应改为uint16_t类型。
- 没有进行强制类型转换导致数据溢出
void function( uint16_t para )
{
uint32_t temp = 0;
temp = para * 10000;
}
当 para 等于7时,temp 的值不等于70000,而等于70000 - 65536 = 4464;应改为如下代码:
void function( uint16_t para )
{
uint32_t temp = 0;
temp = (uint32_t)para * (uint32_t)10000;
}