找回密码
 立即注册
查看: 39|回复: 6

Ai8051u定义的uint32变量但是实际还是16位?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-18 15:50:27
已绑定手机

2

主题

5

回帖

38

积分

新手上路

积分
38
发表于 前天 15:50 | 显示全部楼层 |阅读模式
截图202507181547499738.jpg
C251的头文件定义的DEF.H里typedef unsigned long uint32,用来做了事件标志组的变量,
结果逐个位判断时发现到0~15的位的判断有效,后面的就无效了?
编译器的unsigned long实际上还是16位整型吗?


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:241
  • 最近打卡:2025-07-19 10:15:39
已绑定手机

77

主题

2173

回帖

4943

积分

荣誉版主

无情的代码机器

积分
4943
发表于 前天 16:09 | 显示全部楼层
咋判断的呢,上传判断方法。下面这些0x01用1UL
截图202507181609337744.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-18 15:50:27
已绑定手机

2

主题

5

回帖

38

积分

新手上路

积分
38
发表于 前天 16:39 | 显示全部楼层
erci*** 发表于 2025-7-18 16:09
咋判断的呢,上传判断方法。下面这些0x01用1UL

截图202507181636242162.jpg
左移1相与,逐个位判断是不是1,位越小优先级越高,
找到位号就switch处理对应事件函数,
然后一直循环这样操作达到按优先级处理事件组的后台轮询功能。

点评

注意0x01全改为1UL再试下  详情 回复 发表于 前天 17:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:241
  • 最近打卡:2025-07-19 10:15:39
已绑定手机

77

主题

2173

回帖

4943

积分

荣誉版主

无情的代码机器

积分
4943
发表于 前天 17:44 | 显示全部楼层
AGe*** 发表于 2025-7-18 16:39
左移1相与,逐个位判断是不是1,位越小优先级越高,找到位号就switch处理对应事件函数,然后一直循环这样 ...

注意0x01全改为1UL再试下
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-07-19 08:50:15
已绑定手机

82

主题

5404

回帖

9766

积分

超级版主

DebugLab

积分
9766
发表于 前天 18:15 | 显示全部楼层
注意数据类型和强制类型转换
参与运算的数据(包括常量),数据类型必须相同
等号两端数据类型必须相同
多种数据类型参与运算,没有float和负数就都强制转换为unsigned long
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-07-19 15:53:30

75

主题

6247

回帖

1万

积分

超级版主

积分
13210
发表于 前天 18:22 | 显示全部楼层
这种情况基本都是数据类型没有对齐所致。
举个例子:
u32 a;
u16 b,c;
b = 20000;
c = 20000;
a = b*c;
你会发觉a就是不超过65535,好像是16位的,那是因为b*c的结果就是16位的。
a = (u32)b*c; 这样就能正常了,因为变量已对齐32位的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-18 15:50:27
已绑定手机

2

主题

5

回帖

38

积分

新手上路

积分
38
发表于 前天 19:10 | 显示全部楼层
梁*** 发表于 2025-7-18 18:22
这种情况基本都是数据类型没有对齐所致。
举个例子:
u32 a;

哦哦,原来是这样,这是跟编译器有关系的吗?51的编译器认为一般整型运算结果是16位而不是32位?以前用stm32好像不会这样,是因为stm32编译器是直接用32位存整型?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-20 00:08 , Processed in 0.136835 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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