OpenEdv-开源电子网

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

在ucos中使用外部中断出现掉数的问题

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-8-13
在线时间
0 小时
发表于 2015-8-13 14:22:09 | 显示全部楼层 |阅读模式
5金钱
如题,在ucos中通过外部中断读取编码器数据时,如果编码器转速较低时,编码器读数正常,如果编码器转速较快时,编码器读数将出现出现掉数的问题,即转了一圈之后原本是2500,但是实际读下来可能只有2450这样子,不知道大家有没有遇到过,有什么解决方法没有?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-8-13
在线时间
0 小时
 楼主| 发表于 2015-8-13 16:29:56 | 显示全部楼层
后面调试过程中发现,进中断次数没有问题,但是在中断里面判断引脚电平出现了问题,应该是高电平的引脚结果读出来是低电平,在这个项目中只加了外部中断和串口2中断,请教下外部中断和串口中断哪个优先级别高,在哪里查看?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-13 20:26:48 | 显示全部楼层
回复【2楼】chuandalijie:
---------------------------------
优先级看你的软件配置。。。
看代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-8-13
在线时间
0 小时
 楼主| 发表于 2015-8-14 11:30:58 | 显示全部楼层
我中断都是使用的ucos中bsp的设置方式,使用的BSP_IntVectSet和BSP_IntEn这两个函数进行设置的,不知道具体的中断优先级是在那个文件中进行设置,求指教。
回复

使用道具 举报

2

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2014-4-28
在线时间
5 小时
发表于 2015-8-15 15:44:43 | 显示全部楼层
中断优先级都是自己设置的
回复

使用道具 举报

2

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2014-4-28
在线时间
5 小时
发表于 2015-8-15 15:45:21 | 显示全部楼层
可以让我们帮你看看与NVIC相关的代码,如果你自己不知道的话
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-16 21:29:06 | 显示全部楼层
回复【4楼】chuandalijie:
---------------------------------
你这代码,谁写的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-8-13
在线时间
0 小时
 楼主| 发表于 2015-8-17 16:38:27 | 显示全部楼层
代码我写的啊,没有使用NVIC。后面找到设置中断优先级的函数BSP_IntPrioSet,但是没有改善。测试可能发现是systick的中断运行时间运行太长了,我将OSCfg_TickRate_Hz这个值改大,发现掉数严重,改小之后会好些,这块不知道大家有什么建议没有?
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-8-13
在线时间
0 小时
 楼主| 发表于 2015-8-17 16:42:33 | 显示全部楼层
回复【6楼】Llinuxu:
---------------------------------
没有使用NVIC,用的BSP_IntVectSet、BSP_IntE、BSP_IntPrioSet这几个函数
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-8-13
在线时间
0 小时
 楼主| 发表于 2015-8-17 16:43:47 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
测试可能发现是systick的中断运行时间运行太长了,ucos3系统调度这块哪些功能可以关闭使得调度运行时间缩短?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-17 21:55:14 | 显示全部楼层
回复【10楼】chuandalijie:
---------------------------------
这我也不太清楚哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-17 23:05:39 | 显示全部楼层

听起来感觉像是编码器给的信号变化太快,代码在做必要的判断时,人家状态早变了。所以,既然进中断了,后面干脆就别判断(除非上升下降沿都触发中断,否则判断当时的电平感觉意义不大),直接计数试试?

硬件还是懵懂状态,瞎扯,说错的话,不要见笑

有软件开发经验,从0硬件基础学习STM32开发。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 10:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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