找回密码
 立即注册
查看: 720|回复: 13

哪位老师帮忙解答下这个是什么意思

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:421
  • 最近打卡:2025-05-03 12:14:59

14

主题

54

回帖

1344

积分

金牌会员

积分
1344
发表于 2024-4-7 11:31:09 | 显示全部楼层 |阅读模式
j = (u16)((duty*4096UL)/(PERIOD+1));    //计算ADC采样理论值

这里面的*4096UL代表什么意思

#define PERIOD          255L   //PWM周期

还有这个255L是多少
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:359
  • 最近打卡:2025-04-25 07:34:15
已绑定手机

21

主题

81

回帖

605

积分

高级会员

积分
605
发表于 2024-4-7 11:42:58 | 显示全部楼层
UL表示unsigned long,L表示long
如果直接写4096会定义为int型,后面加上UL,就表示这个4096是unsigned long型的数据。
255L同理
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:421
  • 最近打卡:2025-05-03 12:14:59

14

主题

54

回帖

1344

积分

金牌会员

积分
1344
发表于 2024-4-7 12:16:50 | 显示全部楼层
qq6750*** 发表于 2024-4-7 11:42
UL表示unsigned long,L表示long
如果直接写4096会定义为int型,后面加上UL,就表示这个4096是unsigned lon ...

这两个数没超出int型的范围,为什么要定义为长整形
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-03 10:42:54
已绑定手机

46

主题

1694

回帖

2548

积分

金牌会员

积分
2548
发表于 2024-4-7 13:11:16 | 显示全部楼层
mtia*** 发表于 2024-4-7 12:16
这两个数没超出int型的范围,为什么要定义为长整形

你可以定义成长整型啊,它支持
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-03 10:42:54
已绑定手机

46

主题

1694

回帖

2548

积分

金牌会员

积分
2548
发表于 2024-4-7 13:11:43 | 显示全部楼层
jw*** 发表于 2024-4-7 13:11
你可以定义成长整型啊,它支持

只是你用不用的问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-02 07:32:37

21

主题

564

回帖

2678

积分

金牌会员

积分
2678
发表于 2024-4-7 13:35:14 | 显示全部楼层
keilc51使用的字节范围是
int 占两个字节 范围:-32768~+32767

long占四个字节 范围:-2147483648~+2147483647

为啥要用usigned long再强制转换回u16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:421
  • 最近打卡:2025-05-03 12:14:59

14

主题

54

回帖

1344

积分

金牌会员

积分
1344
发表于 2024-4-7 13:43:11 | 显示全部楼层
wangxi*** 发表于 2024-4-7 13:35
keilc51使用的字节范围是
int 占两个字节 范围:-32768~+32767

不知道,这个是屠龙刀核心板的例程里面的,就是不明白才来问下什么意思,原程序:
                cnt200ms = 0;
                adc = Get_ADC12bitResult(8);  //参数0~15,查询方式做一次ADC, 返回值就是结果
                j = (u16)((duty*4096UL)/(PERIOD+1));    //计算ADC采样理论值
                if(j>adc)
                {
                    if(((j-adc)>THRESHOLD) && (feedback<=PERIOD)) feedback++;
                }
                else
                {
                    if(((adc-j)>THRESHOLD) && (feedback>0)) feedback--;
                }
                printf("ADC=%u,duty=%u,feedback=%u\r\n",adc,duty,feedback);
                UpdatePwm(feedback);    //更新占空比
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:449
  • 最近打卡:2025-04-30 10:57:37

17

主题

533

回帖

1326

积分

金牌会员

积分
1326
发表于 2024-4-7 14:44:15 | 显示全部楼层
其实直接4096也行
自信就会温和,温和就会坚定!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-05-03 00:18:42
已绑定手机

13

主题

1257

回帖

2979

积分

金牌会员

积分
2979
发表于 2024-4-7 14:50:57 | 显示全部楼层
mtia*** 发表于 2024-4-7 13:43
不知道,这个是屠龙刀核心板的例程里面的,就是不明白才来问下什么意思,原程序:
                cnt20 ...

duty*4096: 可能超过65535,所以强制为UL类型,不丢位。
(u16)  :最后的结果肯定是小于65535的,所以再强制转换回来。

从汇编过来的,之前看过好像是这样的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:171
  • 最近打卡:2025-04-30 08:31:08

0

主题

7

回帖

246

积分

中级会员

积分
246
发表于 2024-4-7 15:54:02 | 显示全部楼层
嵌入*** 发表于 2024-4-7 14:44
其实直接4096也行

自己搞肯定就这样干了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 20:33 , Processed in 0.135299 second(s), 123 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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