关于STM32的中断问题

[复制链接]
3527|14
 楼主| rainsinging 发表于 2012-9-10 16:37 | 显示全部楼层 |阅读模式
EXTI_IMR这个寄存器我想改变MR11这位的值,可显示他是无法改的,那STM32的中断怎么去控制他的开关呢,很多地方都说配置优先级别或是关总中断,但是我希望是关掉某一路的中断请求,不关其他路的,想打开时再打开。希望有高手给点指导啊,谢谢啊!
IJK 发表于 2012-9-10 17:52 | 显示全部楼层
还是 另辟蹊径吧。
figo20042005 发表于 2012-9-10 19:18 | 显示全部楼层
看下这方面的例子和资料吧
梅花望青竹 发表于 2012-9-11 10:36 | 显示全部楼层
是不是只读?修改一下
 楼主| rainsinging 发表于 2012-9-11 11:08 | 显示全部楼层
#define  EXTI_IMR_MR11                       ((uint32_t)0x00000800)        /*!< Interrupt Mask on line 11 */
他是这样定义的,也不知道怎么改 4# 梅花望青竹
xinjitm 发表于 2012-9-11 13:56 | 显示全部楼层
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//DISABLE
 楼主| rainsinging 发表于 2012-9-11 14:00 | 显示全部楼层
这个把外部中断全关了,我希望是只关一个 6# xinjitm
dream-yi 发表于 2012-9-11 17:28 | 显示全部楼层
应该可以吧,那是中断屏蔽寄存器,怎么会不能操作呢
 楼主| rainsinging 发表于 2012-9-11 17:32 | 显示全部楼层
EXTI_IMR_MR11=0;
error:#137:expression must be a modifiable lvalue
8# dream-yi
dream-yi 发表于 2012-9-11 19:26 | 显示全部楼层
寄存器操作是这样的吗?没这么用过啊
dream-yi 发表于 2012-9-11 19:42 | 显示全部楼层
你这样写就行了:EXTI->IMR=0Xxxxxxxxx其中xxxxxxxx是你要屏蔽的位。手册上写了:
EXTI 寄存器描述 138/754
关于寄存器描述中的缩略词,请参考1.1节。 必须以字(32位)的方式操作这些外设寄存器。

评分

参与人数 1威望 +1 收起 理由
rainsinging + 1 谢谢

查看全部评分

 楼主| rainsinging 发表于 2012-9-11 21:21 | 显示全部楼层
刚弄这个没多久,寄存器操作果然不太行啊,谢谢你的指导 11# dream-yi
 楼主| rainsinging 发表于 2012-9-11 21:24 | 显示全部楼层
这,结贴怎么搞啊。。。
 楼主| rainsinging 发表于 2012-9-12 09:46 | 显示全部楼层
我想再问一下哈
void EXTI15_10_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line11) != RESET)
   {
    EXTI_ClearITPendingBit(EXTI_Line11);
    EXTI->IMR=0x00000000;//屏蔽中断
    }
}
屏蔽之后,还是会进中断,只是一直无法实现if的条件,有什么办法不让他进这个中断的么,不要关闭所有中断,谢谢 11# dream-yi
香水城 发表于 2012-9-12 10:30 | 显示全部楼层
如果刚接触STM32系列微控制器

还是建议你从库函数看起,ST的标准库提供了EXTI配置的例程,看看例程是怎么写寄存器的,你的要求很容易做到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部