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

PWMA_CCR1H设置问题!

[复制链接]

该用户从未签到

2

主题

4

回帖

34

积分

新手上路

积分
34
发表于 2024-3-6 21:07:50 | 显示全部楼层 |阅读模式
截图202403062102344990.jpg
想问一下,这个PWMA_CCR1H 上下两个u16和u8?为什么这两个不同呢?什么时候用u16或者u8呢?这里PWM_PERIOD是一个1000的数值,大于256的,按理说换算成二进制应该是高于8位的二进制,这里”PWMA_CCR1L = (u16)(PWM_PERIOD)“是表示PWMA_CCR1L“自动”取PWM_PERIOD(即1000)二进制的低8位吗?感谢大佬们帮我答疑解惑!
回复 送花

使用道具 举报

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

    [LV.7]常住居民III

    67

    主题

    836

    回帖

    2776

    积分

    金牌会员

    积分
    2776
    发表于 2024-3-6 21:32:36 | 显示全部楼层
    应该是u8吧,不过用u16也不会出问题,反正PWM_PERIOD>>8也 是一个8位值。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:53
  • 签到天数: 106 天

    [LV.6]常住居民II

    31

    主题

    387

    回帖

    1944

    积分

    荣誉版主

    积分
    1944
    发表于 2024-3-7 08:51:20 | 显示全部楼层
    本帖最后由 王昱顺 于 2024-3-7 09:24 编辑

    其实只用一个(u8)即可,因为这里面的寄存器是8位的。
    这个强制类型转换其实是用来防止编译器给数据优化没了
    举个实际的例子。读一个数据寄存器的高八位和低八位时候
    建议这么写 result=((u16)dath<<8)|(u16)datl;
    可以保证往高位移位的时候数据不被消除掉
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 08:41
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2024-3-7 09:18:10 | 显示全部楼层
    王昱顺 发表于 2024-3-7 08:51
    其实只用一个(u8)即可,因为这里面的寄存器是8位的。
    这个强制类型转换其实是用来防止编译器给数据优化没了 ...

    啊 是先移位再强转么0.0
    我一直都是这样写的
    result=((u16)dath<<8) | (u16)datl;

    点评

    写错了,我这就改  发表于 2024-3-7 09:23
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2930

    回帖

    6603

    积分

    超级版主

    积分
    6603
    发表于 2024-3-7 10:05:46 | 显示全部楼层
    u16是错误的,应该用u8。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    67

    主题

    836

    回帖

    2776

    积分

    金牌会员

    积分
    2776
    发表于 2024-3-7 11:01:27 | 显示全部楼层
    直接用PWMA_CCR1=PWM_PERIOD,可以吗?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 09:47 , Processed in 0.065265 second(s), 55 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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