[STM8] STM8S103F3使用长整形unsigned long数据操作的问题

[复制链接]
 楼主| 防滑销钉 发表于 2016-7-23 19:19 | 显示全部楼层 |阅读模式
单片机型号为STM8S103F3P3,编译环境为STVP+cosmic。

出现问题的语句是,
#define PWM_ARR 20000
unsigned long duty= 0;
TIM1_CCR3H = ((duty*PWM_ARR/100)>>8)&0xff;
TIM1_CCR3L = (duty*PWM_ARR/100)&0xff;

上面duty变量是PWM输出占空比,然后宏PWM_ARR是为了方便改变PWM输出的频率。
通过改变duty的值输出不同的占空比。

问题出现在一次调试时我想让CC3固定输出100%的占空比,所以就把duty直接幅值为100.
即TIM1_CCR3H = ((100*PWM_ARR/100)>>8)&0xff;
TIM1_CCR3L = (100*PWM_ARR/100)&0xff;

结果发现TIM1_CCR3H 和TIM1_CCR3L的值完全不对了

请问大家这是什么原因呢?
mmuuss586 发表于 2016-7-23 22:57 | 显示全部楼层
溢出了,只取了最后一个字节吧;
734774645 发表于 2016-7-24 16:00 | 显示全部楼层
有点难以理解。太深奥了。
gejigeji521 发表于 2016-7-24 19:42 | 显示全部楼层
按位画一画,看看是哪儿错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部