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

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

[复制链接]
  • TA的每日心情
    开心
    昨天 21:46
  • 签到天数: 85 天

    [LV.6]常住居民II

    12

    主题

    42

    回帖

    272

    积分

    中级会员

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

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

    #define PERIOD          255L   //PWM周期

    还有这个255L是多少
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 116 天

    [LV.6]常住居民II

    11

    主题

    72

    回帖

    305

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 21:46
  • 签到天数: 85 天

    [LV.6]常住居民II

    12

    主题

    42

    回帖

    272

    积分

    中级会员

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 154 天

    [LV.7]常住居民III

    25

    主题

    710

    回帖

    1767

    积分

    金牌会员

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 154 天

    [LV.7]常住居民III

    25

    主题

    710

    回帖

    1767

    积分

    金牌会员

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 157 天

    [LV.7]常住居民III

    12

    主题

    339

    回帖

    1064

    积分

    金牌会员

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 21:46
  • 签到天数: 85 天

    [LV.6]常住居民II

    12

    主题

    42

    回帖

    272

    积分

    中级会员

    积分
    272
     楼主| 发表于 2024-4-7 13:43:11 | 显示全部楼层
    wangxiangtan 发表于 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);    //更新占空比
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 10:12
  • 签到天数: 138 天

    [LV.7]常住居民III

    9

    主题

    264

    回帖

    917

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 97 天

    [LV.6]常住居民II

    9

    主题

    554

    回帖

    813

    积分

    高级会员

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    0

    主题

    5

    回帖

    94

    积分

    注册会员

    积分
    94
    发表于 2024-4-7 15:54:02 | 显示全部楼层

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-30 12:48 , Processed in 0.067754 second(s), 64 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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