sunwah 发表于 2018-8-2 13:41:45

stm1024 发表于 2018-8-2 11:44
stdint.h,了解一下?
使用uint32_t试试?

:lol 早就试过了,sizeof的值也是4 :funk:

toofree 发表于 2018-8-2 14:49:02

本帖最后由 toofree 于 2018-8-2 14:52 编辑

sunwah 发表于 2018-8-2 10:02
额,或者你能不能告诉我,在IAR里面有没有办法定义出来一个32位整数变量?我怎么折腾,都是16位。 ...








sunwah 发表于 2018-8-3 11:15:16

toofree 发表于 2018-8-2 14:49


void HandleADC()
{
char ADCBuff;
uint32_t Voltage;
unsigned long Temp;

//第一次读取的ADC值需要丢弃
ADC_Data_Read(&ADCData);            //读取ADC的采样数值
ADC_Data_Read(&ADCData);            //读取ADC的采样数值

Voltage = ADCData * 330L / 1024L;

Temp = (unsigned int)Voltage;

ADCBuff = 0x0a;
ADCBuff = 0x0d;                  //换行字符
ADCBuff = Int2HexString(Temp % 100 % 10);
ADCBuff = Int2HexString(Temp % 100 / 10);
ADCBuff = '.';
ADCBuff = Int2HexString(Temp / 100);

Uart1_SendString(ADCBuff,6);          //向PC机发送ADC采样数值
}

谢谢你!按照你的做法,运算的时候330和1024后面加L,运算出来的结果就是正确的。

robter 发表于 2018-9-20 22:08:46

又是一个很好的经验

Kevin201707 发表于 2020-9-23 19:33:56

好经验!
页: 1 [2]
查看完整版本: 在IAR里面,为啥unsigned long只有16位数?