迪文科技论坛

 找回密码
 立即注册
搜索
查看: 317|回复: 3

【提问】关于关键字static在T5L8051C开发中遇到的问题

[复制链接]

1

主题

1

回帖

34

积分

新手上路

Rank: 1

积分
34
发表于 2022-4-14 18:05:36 | 显示全部楼层 |阅读模式
近期在对迪文屏进行8051C开发中遇到了一个关于static的问题,当变量是idata时,用static关键字正常,但是如果变量是xdata时,那么static修饰的变量就会出现初始值不是0的情况,。具体情况如图片所示:打印的第一个第二个字节是static修饰过的xdata变量,那么它的数据不是0;
打印的第三个第四个字节虽然经过static修饰但它是idata的变量没有发生改变;
第五个第六个字节是没有经过static修饰过的xdata数据它是能够被初始化的。
图片中三个结构体的定义均在系统初始化后定义,所以不存在xdata不能初始化的问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

8

回帖

67

积分

注册会员

Rank: 2

积分
67
发表于 2022-4-15 09:44:44 | 显示全部楼层
请问一下您这边的_UserUartRxTypedef 这个结构体的类型里面具体是怎么样的,因为结构体初始化,最好是对每一个变量进行初始化,或者使用memset函数和sizeof函数进行初始化。
回复

使用道具 举报

1

主题

1

回帖

34

积分

新手上路

Rank: 1

积分
34
 楼主| 发表于 2022-4-15 14:19:15 | 显示全部楼层
江南一枝花 发表于 2022-4-15 09:44
请问一下您这边的_UserUartRxTypedef 这个结构体的类型里面具体是怎么样的,因为结构体初始化,最好是对每 ...

结构体中的成员变量是这个样子的如截图所示,奇怪的是没有经过static修饰过的xdata数据在定义的时候直接赋值0是正常的,如果经过static修饰过的xdata数据定义的时候赋值0,他的实际结果不是0,应该不是需要“逐个赋值”。如果需要“逐个赋值”那么没有经过static修饰过的xdata数据也会出现不为0的情况。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

1

回帖

41

积分

新手上路

Rank: 1

积分
41
发表于 2022-4-22 16:26:25 | 显示全部楼层
猜测是程序启动后没有对这一段清零。我编程时即使不用xdata修饰也是不清零的。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-4-6 12:16 , Processed in 0.058854 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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