硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4007|回复: 6
收起左侧

[IAR] IAR7.5 + 固件库 1.6.1 一堆 warning

[复制链接]

14

主题

109

回帖

151

积分

初级会员

积分
151
发表于 2016-3-22 09:54:11 | 显示全部楼层 |阅读模式
建了个新工程
用的 IAR7.5, 标准固件库 1.6.1
结果固件库给了一堆 warning
请问怎解?

123.png

223.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2016-3-22 21:24:53 | 显示全部楼层
是不是哪里的头文件路径没有加,或者全局的宏定义没有加。
回复

使用道具 举报

14

主题

109

回帖

151

积分

初级会员

积分
151
 楼主| 发表于 2016-3-23 09:22:45 | 显示全部楼层
不是的,
昨天搞了一下
问题出在 ~ 这个运算符
举个例子把
TIMx->CCER &= (uint16_t)~TIM_CCER_CC4E;
改成
TIMx->CCER &= (uint16_t)~(unsigned int)TIM_CCER_CC4E;

就没问题了,
可是就找不出个合理的解释
无奈
[s:120]
回复

使用道具 举报

14

主题

109

回帖

151

积分

初级会员

积分
151
 楼主| 发表于 2016-3-23 12:50:39 | 显示全部楼层
找了个比较对味的解释
在 32 位元的系统里面
不论是 uint8_t 或是 uint16_t 或是 uint32_t 的定义
对内存来说都是占用了 32 位元,只不过是决定了使用的大小

那在这种情况下
~ 就会直接对 32 位元进行处理

ex:
   uint16_t test = 0x00a5
   我们希望 ~test 会是 0xff5a
   
   但在 IAR7.5 里面 ~test 会变成 0xffff ff5a
   所以产生 (with possibly unexecpted result) 的 warning
   
   即便做了转型
   uin16_t I2C_CR2_FREQ
   uin16_t tmpreg
   
   tmpreg &= (uint16_t)~((uin16_t)I2C_CR2_FREQ);
   
   还是没用
   
   tmpreg &= (uint16_t)~((unsigned int)((uin16_t)I2C_CR2_FREQ));
   
   这样才能消除
   
看起来是这样,不知道理解的对不对
[s:122]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2016-3-23 14:02:10 | 显示全部楼层
在 32 位元的系统里面
不论是 uint8_t 或是 uint16_t 或是 uint32_t 的定义
对内存来说都是占用了 32 位元,只不过是决定了使用的大小
--------------------------------------
这个说法不对,IAR中没怎么研究过,MDK中定义的是几个字节的变量类型就是几个字节对齐。
要是程序中用了很多uint8_t的话,那岂不是非常浪费内存。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=13511
回复

使用道具 举报

14

主题

109

回帖

151

积分

初级会员

积分
151
 楼主| 发表于 2016-3-23 16:12:48 | 显示全部楼层
是的,你是对的
下面是某个数组的内存位置
323.png

几个字节的变量类型就是几个字节对齐

那我能想到的唯一解释就是
在编译时内部寄存器是 32 位元
uint16_t testtt = 0x00a5
R0 = 0x000000a5
R1 = 0xffffff5a

这时返回的值会有遗漏,所以 warning

C99 里面这麽定义

423.png
回复

使用道具 举报

19

主题

150

回帖

207

积分

高级会员

积分
207
发表于 2021-11-30 10:48:44 | 显示全部楼层
ptiinngg 发表于 2016-3-23 16:12
是的,你是对的
下面是某个数组的内存位置

好棒 keil里还能这么看数组。赞。还有C99的说明。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 19:27 , Processed in 0.269799 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表