搜索
bottom↓
回复: 3

请教:MSP430f5438a 当开启RTC中断嵌套,无法进入RTCRDY中断

[复制链接]
(79005623)

出0入0汤圆

发表于 2018-10-15 19:10:06 | 显示全部楼层 |阅读模式
1、调试环境
msp430f5438a + iar7.10

2、调试代码
  1. void rtc_init(void)
  2. {                                                               
  3.         RTCCTL01 |= RTCAIE + RTCRDYIE + RTCHOLD + RTCMODE;

  4.         RTCAMIN = RTCAE;
  5.         RTCAHOUR = 0x00;
  6.         RTCADOW = 0x00;
  7.         RTCADAY = 0x00;

  8.         RTCCTL01 &= ~(RTCHOLD);                  
  9. }
复制代码

  1. #pragma vector = RTC_VECTOR
  2. __interrupt void RTC_ISR(void)
  3. {
  4.         _EINT();

  5.         switch (__even_in_range(RTCIV, 16))
  6.         {
  7.         case RTC_NONE:
  8.                _NOP();
  9.                 break;

  10.         case RTC_RTCRDYIFG:  //注释1:如果不开启中断嵌套(不使用_EINT()),则可以正常进入RTCRDY中断
  11.                 _NOP();
  12.                 break;

  13.         case RTC_RTCTEVIFG:
  14.                 _NOP();
  15.                 break;

  16.         case RTC_RTCAIFG:
  17.                 _NOP();
  18.                 break;

  19.         case RTC_RT0PSIFG:
  20.                _NOP();
  21.                 break;

  22.         case RTC_RT1PSIFG:
  23.                _NOP();
  24.                 break;

  25.         case 12:
  26.                 _NOP();
  27.                 break;      

  28.         case 14:  //注释2:如果开启中断嵌套(使用_EINT()),调试发现,程序执行到此处,而这里是保留区域
  29.                 _NOP();
  30.                 break;

  31.         case 16:
  32.                 _NOP();
  33.                 break;                  

  34.         default:
  35.                  _NOP();
  36.                 break;
  37.         }
  38. }
复制代码


3、调试现象
当RTC中断中不开启中断嵌套,则程序每秒钟可正常进入RTCRDY中断,如程序中的注释1;
当RTC中断中开启中断嵌套,则程序每秒钟将进入case 14位置,如程序中的注释2;

真的是百思不得其解!恳请各位指教,不胜感激!
(78997439)

出0入0汤圆

 楼主| 发表于 2018-10-15 21:26:30 | 显示全部楼层
再补充下:
1、将switch (__even_in_range(RTCIV, 16))中第二个参数更改,程序指针会case到其它位置(但不是在正确的位置)。
2、通过寄存器窗口查看,RTCIV的值的确是2。如果使用switch(RTCIV),替换switch (__even_in_range(RTCIV, 16)),能够case到正确的位置,也就能正确执行。
很是困惑!
(78948369)

出0入0汤圆

 楼主| 发表于 2018-10-16 11:04:20 | 显示全部楼层
不知道各位是否遇到过类似情况,恳请指教~
(78935712)

出0入0汤圆

发表于 2018-10-16 14:35:17 | 显示全部楼层
case 下面一样,跳到哪都一样,别纠结了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-17 05:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表