完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近搞一个家伙玩玩,发现用宏定义计算定时器0的初值的时候出现很大的问题,定义之后用printf()函数打印出来得到的数据都不对啊,郁闷啊。请高手帮忙解答一下
代码是这样的: printf函数代码是:printf("T0MS=%xrn",T0MS); printf("T0MS1=%xrn",T0MS1); 语句1手动计算的时候的出的是0xdc00,这个公式算出来的和STC官方软件算出来的一样。 |
|
相关推荐
9个回答
|
|
|
|
|
|
刚开始我也是这么想的,但是unsigned long 这个32位的数据类型的话没有超,回头试下直接用公式来算下。目前暂时直接用0xdc00代替先调试着吧。
但是同一个公式,在12M晶振的系统下这样计算没问题,定时器工作是都是符合设计的,把晶振换到22.1184M的时候就不多,这个公式是通用的,为啥不行呢,这个就想不明白了,是不是走进什么误区了呢? |
|
|
|
|
|
|
|
|
|
|
|
原子哥,按你这样的方法精简了一下,还是不行,打印出来变成1了。直接将后面的0给精简掉了
|
|
|
|
那就不知道了,呵呵。
|
|
|
|
加了强制性类型转换计算就好了,呵呵
#define Time0_VAL5//单位为ms #define MAIN_Fosc22118400L//定义主时钟 #define T0MS((u16)((u32)65536 - (u32)(Time0_VAL * MAIN_Fosc / 12000))) |
|
|
|
|
|
大家这么说,呵呵。。。还得谢谢原子哥指点啊
|
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
2999 浏览 16 评论
3496 浏览 1 评论
9069 浏览 16 评论
4089 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
602浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2339浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 01:08 , Processed in 1.395397 second(s), Total 97, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号