OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4550|回复: 10

51定时器输出固定脉冲,输出脉冲宽度不对

[复制链接]

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2013-11-1
在线时间
5 小时
发表于 2014-11-23 17:13:36 | 显示全部楼层 |阅读模式
5金钱
我想用51的定时器来产生固定脉冲,脉冲宽度数据存放在数组里面。每次中断后将新的数据装进TH和TL,但是测量输出脉冲宽度怎么都不对! 我使用具体数值装入TH和TL产生脉冲确实对的,一旦装入值为变量,出来的脉冲就不对了,如TH1=(65535-x)/256;TL1=TH1; 其中x我在外面赋值x=500;但是脉宽出来就不对了。请问大家有遇到这个情况吗?          还有另外一个问题,我在xdata中定义的数据如果想强制转换成data,改怎么转换?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2014-11-23 22:15:17 | 显示全部楼层
变量x是char型还是int型,第二个定义变量的时候可以加个data修饰
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2013-11-1
在线时间
5 小时
 楼主| 发表于 2014-11-23 22:26:37 | 显示全部楼层
回复【2楼】as564335sa:
---------------------------------
我的设置 是small,默认应该就是data了。我定义其实是在xdata中,然后强制转成data了,但是我实测时脉宽只要装值时设置的是变量所出来的脉宽就不对,不知道是我设置的不对还是怎么,
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2014-11-24 12:17:07 | 显示全部楼层
回复【3楼】菜菜:
---------------------------------你这小程序不用理会什么small large的设置,不明白你说的定义在xdata中怎么强制转换成data,xdata和data完全两个不同的存储区,你是要把xdata中的数据搬到data中?要做什么?脉宽不对你看过你的变量x定义的是什么类型了吗,如果是char型你赋值500那么实际值是244,int型才是500,进调试看看吧
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2013-11-1
在线时间
5 小时
 楼主| 发表于 2014-11-24 12:59:38 | 显示全部楼层
回复【4楼】as564335sa:
---------------------------------
不好意思没表示清楚,我是想把xdata存的uchar类型数据转成存储在data里的uint类型,可以直接(unsigned int)吗?      变量x定义是unsigned int类型的
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2014-11-24 13:41:52 | 显示全部楼层
xdata是外挂的ram?可以直接强制转换
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2013-11-1
在线时间
5 小时
 楼主| 发表于 2014-11-24 16:15:37 | 显示全部楼层
回复【6楼】as564335sa:
---------------------------------
没外挂ram,只是当时数组放data放不下了,就存xdata了。一时找不到问题,只能等这段时间过了再来看看到底怎么回事。
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2014-11-24 19:04:14 | 显示全部楼层
回复【7楼】菜菜:
---------------------------------
data放不下可以把使用频率不是很高的全局变量定义到idata,没有什么转换成data的问题,跟data一样取值,还有,定义x的时候直接定义成int型吧,强制转换只能作用一次,用完了还是char型
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2013-11-1
在线时间
5 小时
 楼主| 发表于 2014-11-24 19:44:40 | 显示全部楼层
data和idata占用的同样都是片内ram,好像只是寻址方式不同。 软延时还是达不到我要的功能,看来还是得找出定时器的问题在哪
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2014-11-24 20:06:42 | 显示全部楼层
才发现,你这TH1=(65535-x)/256;TL1=TH1;能对?
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2013-11-1
在线时间
5 小时
 楼主| 发表于 2014-11-24 20:08:01 | 显示全部楼层
回复【10楼】as564335sa:
---------------------------------
呵呵,这是我偷懒写错了, 实际不是这么写的,自动重装才这样在TH1,TL1之间赋值
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 04:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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