打印

关于STM32的中断问题

[复制链接]
2995|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 | 只看该作者
是不是只读?修改一下

使用特权

评论回复
5
rainsinging|  楼主 | 2012-9-11 11:08 | 只看该作者
#define  EXTI_IMR_MR11                       ((uint32_t)0x00000800)        /*!< Interrupt Mask on line 11 */
他是这样定义的,也不知道怎么改 4# 梅花望青竹

使用特权

评论回复
6
xinjitm| | 2012-9-11 13:56 | 只看该作者
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//DISABLE

使用特权

评论回复
7
rainsinging|  楼主 | 2012-9-11 14:00 | 只看该作者
这个把外部中断全关了,我希望是只关一个 6# xinjitm

使用特权

评论回复
8
dream-yi| | 2012-9-11 17:28 | 只看该作者
应该可以吧,那是中断屏蔽寄存器,怎么会不能操作呢

使用特权

评论回复
9
rainsinging|  楼主 | 2012-9-11 17:32 | 只看该作者
EXTI_IMR_MR11=0;
error:#137:expression must be a modifiable lvalue
8# dream-yi

使用特权

评论回复
10
dream-yi| | 2012-9-11 19:26 | 只看该作者
寄存器操作是这样的吗?没这么用过啊

使用特权

评论回复
11
dream-yi| | 2012-9-11 19:42 | 只看该作者
你这样写就行了:EXTI->IMR=0Xxxxxxxxx其中xxxxxxxx是你要屏蔽的位。手册上写了:
EXTI 寄存器描述 138/754
关于寄存器描述中的缩略词,请参考1.1节。 必须以字(32位)的方式操作这些外设寄存器。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
rainsinging + 1 谢谢
12
rainsinging|  楼主 | 2012-9-11 21:21 | 只看该作者
刚弄这个没多久,寄存器操作果然不太行啊,谢谢你的指导 11# dream-yi

使用特权

评论回复
13
rainsinging|  楼主 | 2012-9-11 21:24 | 只看该作者
这,结贴怎么搞啊。。。

使用特权

评论回复
14
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

使用特权

评论回复
15
香水城| | 2012-9-12 10:30 | 只看该作者
如果刚接触STM32系列微控制器

还是建议你从库函数看起,ST的标准库提供了EXTI配置的例程,看看例程是怎么写寄存器的,你的要求很容易做到

使用特权

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

本版积分规则

14

主题

80

帖子

0

粉丝