打印
[STM8]

求助STM8中断嵌套问题

[复制链接]
5524|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzjgod|  楼主 | 2010-7-27 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想在PORTA的外部中断进行的同时,使用TIM2进行计数
在没有进行任何中断优先级设置的时候,程序在外部中断里运行,但是不会进入到TIM2更新中断中。
之后我按照如下设置(IAR编译器)
  ITC_SPR1_VECT3SPR = 0;  //PORTA中断优先级1
  ITC_SPR4_VECT13SPR = 1; //TIM2中断优先级2
仍然不能进入到TIM2更新中断,我不是很清楚中断嵌套的使用方法,看手册感觉也不是十分明白。
沙发
yzjgod|  楼主 | 2010-7-27 16:55 | 只看该作者
ITC_SPR1_VECT3SPR = 1;  //PORTA中断优先级1
  ITC_SPR4_VECT13SPR = 0; //TIM2中断优先级2
刚才这块好像反了,不过就算是换过来也是进不去TIM2中断

使用特权

评论回复
板凳
yzjgod|  楼主 | 2010-7-27 18:37 | 只看该作者
不好意思,是我自己循环程序的逻辑搞错了,其实是已经进入到中断嵌套

使用特权

评论回复
地板
香水城| | 2010-7-27 18:38 | 只看该作者
:o  怎么错的?

使用特权

评论回复
5
dfsa| | 2010-7-27 21:33 | 只看该作者
错在哪里呢,楼主能否说得稍微具体一点

使用特权

评论回复
6
yzjgod|  楼主 | 2010-7-28 08:43 | 只看该作者
if(!Manual && !SetFlag && !SetOver)
    {
      while(!Set)               //设置键一直按下状态
      {
        if(KeyCounter > 80)     //键盘按下2s以上
        {
          SetFlag = 1;          //设置标志
          DisSet = 1;           //
          Manual = 0;           //自动
          Password = 0;         //
          break;
        }
      }
      if(!Set)
      {
        Display_Key(TM_S,TM_T);     //显示ST(设置)
      }
      else
      {
        Manual = 1;             //不是一直按下,切换到手动状态
        A_M = 0;                //输出为手动状态
      }
    }


程序中的
Manual = 1;             //不是一直按下,切换到手动状态
这句我以前写到
while(!Set)               //设置键一直按下状态
这句里头了,结果在TIM2中判断Manual时,没有对KeyCounter进行操作,程序就死在里头了

使用特权

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

本版积分规则

239

主题

370

帖子

2

粉丝