你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在IAR里面,为啥unsigned long只有16位数?

[复制链接]
sunwah 提问时间:2018-8-1 14:50 /
阅读主题, 点击返回1楼
收藏 评论14 发布时间:2018-8-1 14:50
14个回答
sunwah 回答时间:2018-8-2 13:41:45
stm1024 发表于 2018-8-2 11:44
stdint.h,了解一下?
使用uint32_t试试?

早就试过了,sizeof的值也是4
toofree 回答时间:2018-8-2 14:49:02
本帖最后由 toofree 于 2018-8-2 14:52 编辑
sunwah 发表于 2018-8-2 10:02
额,或者你能不能告诉我,在IAR里面有没有办法定义出来一个32位整数变量?我怎么折腾,都是16位。 ...


傲游截图20170101144728.png

傲游截图20170101144819.png
傲游截图20170101145215.png



评分

参与人数 2ST金币 +1 蝴蝶豆 +4 收起 理由
sunwah + 1 很给力!
zero99 + 4

查看全部评分

sunwah 回答时间:2018-8-3 11:15:16

void HandleADC()
{
  char ADCBuff[20];
  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[5] = 0x0a;
  ADCBuff[4] = 0x0d;                    //换行字符
  ADCBuff[3] = Int2HexString(Temp % 100 % 10);
  ADCBuff[2] = Int2HexString(Temp % 100 / 10);
  ADCBuff[1] = '.';
  ADCBuff[0] = 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
好经验!
12

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版