打印

用STM8的注意了! GPIO外部中断坑爹的设计!

[复制链接]
37423|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bester|  楼主 | 2012-11-22 11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bester 于 2012-11-22 14:20 编辑

帖子更新:
用STM8的注意了! STM8的GPIO外部中断的没有中断标志位,而且,一个端口上的N个引脚共用一个中断向量,坑爹的设计,这样怎么判断是哪个引脚来的中断啊!
跟帖有解说。详见2楼、3楼。
下面是最原始的疑问:
RT
请教:STM8的GPIO中断,如何判断是哪一个IO中断的?
STM8只有一个总的GPIOX(ABCDE)中断,怎么判断是哪个引脚呢?
沙发
bester|  楼主 | 2012-11-22 14:09 | 只看该作者
询问了N个朋友,也问了开发板的厂家,居然不能判断!!
STM8 上是每一个端口 PortA PortB PortC  PortD  PortE,一个中断向量。不管是端口的哪个引脚,都是进相应的PortX的向量。
STM8这样的中断设计,也太坑爹了吧!!!

使用特权

评论回复
板凳
bester|  楼主 | 2012-11-22 14:16 | 只看该作者
这个帖子也说明了这一点:
http://www.amobbs.com/thread-4589868-1-1.html
摘录:
首先,端口的八个GPIO共用一个中断向量.
每个GPIO能够独立配置上升下降作为中断触发条件.
但是这个功能实际上没有太大用处,因为STM8的GPIO中断居然只有中断使能位,没有中断标志位!

举例说明:
想要在A1,A2口上实现两个必须上升沿触发中断的按钮或者外设,需要共用EXT_A的中断向量.
假设有一时间发生了EXT_A中断,进入了中断服务函数.现在没有中断标志位,直接导致要用很复杂的算法才能判断到底是哪个口上发生的中断.

使用特权

评论回复
地板
LingTian| | 2012-11-22 14:36 | 只看该作者
应该很容易处理的吧

使用特权

评论回复
5
xxit| | 2012-11-22 16:40 | 只看该作者
应该很容易处理的吧
LingTian 发表于 2012-11-22 14:36

是啊,进中断以后查询一下,不难吧

使用特权

评论回复
6
飞仔的梦想| | 2012-11-22 18:16 | 只看该作者
每款MCU都有它自己的优势,缺陷也在所难免,关键看应用者的思想了哈:lol

使用特权

评论回复
7
dyf1003| | 2012-11-23 11:51 | 只看该作者
楼上正解:lol

使用特权

评论回复
8
明月小厨| | 2012-11-28 00:19 | 只看该作者
如果每个引脚对应一个中断向量是不是很浪费,毕竟使用IO口中断的人也不太多的;
有的芯片有几十条IO口,都这样占用资源不合理的.

使用特权

评论回复
9
lanmp| | 2012-11-28 12:10 | 只看该作者
不都是这样的么?

使用特权

评论回复
10
wuyingjie_gz| | 2013-4-9 12:02 | 只看该作者
认可它有这个不足,然后再用它. 接收这个不足才能用它, 否则换其它单引脚边沿中断的单片机. 如果非得用边沿中断, 只能如此.

使用特权

评论回复
11
nieweiping231| | 2013-4-9 16:52 | 只看该作者
这个问题很简单啊!

使用特权

评论回复
12
奔牛滚滚| | 2013-4-9 19:19 | 只看该作者
明月小厨 发表于 2012-11-28 00:19
如果每个引脚对应一个中断向量是不是很浪费,毕竟使用IO口中断的人也不太多的;
有的芯片有几十条IO口,都这样 ...

可以共用一个中断,但是应该设定几个状态寄存器,就是多几个标志位而已,多占用什么资源?

使用特权

评论回复
13
desertsailor| | 2013-4-9 19:41 | 只看该作者
虽然是边沿触发,但是信号在跳变到某个电平后也会维持一段时间吧,这样就可以用读IO口来查询;如果实在是触发信号很短,那你就用不同的端口上的引脚呗。无论如何,在有限的外部中断下,相比一个外部中断对应一个引脚,每个引脚都能触发外部中断这种方式还是极大的提高了灵活性。

使用特权

评论回复
14
hawksabre| | 2013-4-9 20:36 | 只看该作者
这个问题应该不是很大   楼主   问题不会很大   静下心来慢慢搞   很简单

使用特权

评论回复
15
roper_peter| | 2013-7-28 20:48 | 只看该作者

最近在用STM8L101F3P这棵IC ,发现同样的问题,在使能同一端口的两个位(PA2、PA3)作为外部中断换醒时,只有其中的一个可以从HALT模式中换醒,而另外一个端口位能够进入中断服务程序,但却不能从HATL模式中换醒,

使用特权

评论回复
16
hxb20122012| | 2013-7-29 09:32 | 只看该作者
肯定可以区分是哪一个IO口的外部中断,如果不可以ST敢出这样的芯片吗。

使用特权

评论回复
17
tiedanbb| | 2013-9-16 14:57 | 只看该作者
读引脚不就行了么

使用特权

评论回复
18
tiedanbb| | 2013-9-16 14:57 | 只看该作者
每个引脚都有中断标志位那是51时代吧,只有两个外部中断

使用特权

评论回复
19
puchuang| | 2013-9-16 18:34 | 只看该作者
比较简单的问题  进入中断  查一下  不就解决了吗  楼主

使用特权

评论回复
20
xxiao6130| | 2013-9-16 19:16 | 只看该作者
进中断后再查询一下就可以判断是那个IO了,我就是这么处理的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

215

帖子

3

粉丝