MCU: Stellaris® LM3S608 Microcontroller编译环境: IAR Embedded Workbench 5.5问题描述:初始化3个通用定时器,均配置为32位周期性定时器,使能了定时器中断和定时器中断源 IntEnable(ulIntTimer); TimerIntEnable(ulBase, ulIntFlags);但是此处没有使能定时器(TimerEnable(TIMER0_BASE, TIMER_A);)接着初始化了其他的外设以及驱动,最后运行系统,使能IntMasterEnable();和定时器中断TimerEnable(TIMER0_BASE, TIMER_A);现象:定时器初始化完毕之后,在没有使能定时器的情况下,发现代码进入了定时器中断处理函数。(通过在中断处理函数中放置while(1);捕获)如果将IntEnable(ulIntTimer); TimerIntEnable(ulBase, ulIntFlags);放置所有外设以及驱动初始化之后,运行系统之前,就不会出现这种问题。在Stellaris® LM3S5K31 Microcontroller上也出现过类似情况。问题是没有使能定时器的时候,问什么会进入定时器中断呢?勘误上也没有此类问题描述。
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
测试这个问题时没有使用RTOS,初始化外设以及驱动之前确实没有关闭处理器中断,IntMasterDisable()
但是处理器中断默认应该是关闭的吧。
不过我再验证一下,看看使能处理器中断的时候,处理器中断是否已经使能……
经过试验发现,初始化系统时钟时候,处理器中断已经开启了。
如果初始化系统时钟之后,关闭处理器中断,IntMasterDisable()就不会在进入定时器中断了。
虽然问题可以这么解决,但是在定时器没有使能的时候进入定时器中断的原因还是没有搞清楚~
期待高人解答!!
一周热门 更多>