打印

EXTI的迷惑

[复制链接]
1951|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a1z26|  楼主 | 2008-12-10 08:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不好意思,图片没有传上来,只好重发一遍。别砸我啊。按照手册说明,对应位为1时代表发生了选择的触发请求,但初始化之后对应位就已经是1了,怎么回事?
沙发
a1z26|  楼主 | 2008-12-10 08:52 | 只看该作者

对应寄存器(Keil下的)

使用特权

评论回复
板凳
香水城| | 2008-12-10 10:37 | 只看该作者

EXTI解惑

这个现象不难理解,请看下面这个EXTI的框图:从输入管脚至挂起寄存器之间没有任何控制门,挂起寄存器上反映了输入管脚的真实状态,EXTI的控制是通过中断屏蔽寄存器和事件屏蔽寄存器(图中黄色部分)实现,

使用特权

评论回复
地板
a1z26|  楼主 | 2008-12-10 15:25 | 只看该作者

致香水城

香水城,你好,谢谢答复,不过我还有问题。

我用的是软件仿真,实际上管脚没有输入。一开始我设置管脚模式为IN_FLOATING浮空输入,后来又改为IPD下拉输入,即默认是0,初始化
后还是
不行。

另外,EXTI_ClearITPendingBit(EXTI_Line9)函数执行如下:
void EXTI_ClearITPendingBit(u32 EXTI_Line)
{
  /* Check the parameters */
  assert_param(IS_EXTI_LINE(EXTI_Line));
  
  EXTI->PR = EXTI_Line;
}
而EXTI_Line代表0x00200,名义上是清除挂起位,实际上是置1了。
不知道是不是这样理解?

还有,清除挂起标志位函数(如下),怎么执行过程一样?难道
挂起位和挂起标志位是一样的?
void EXTI_ClearFlag(u32 EXTI_Line)
{
  /* Check the parameters */
  assert_param(IS_EXTI_LINE(EXTI_Line));
  
  EXTI->PR = EXTI_Line;
}

使用特权

评论回复
5
香水城| | 2008-12-10 15:41 | 只看该作者

软件仿真的问题我不熟悉,我只关心真正芯片的行为

使用特权

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

本版积分规则

28

主题

214

帖子

0

粉丝