马上再次进入中断

[复制链接]
959|13
chenho 发表于 2015-2-28 19:02 | 显示全部楼层 |阅读模式
想用定时器产生一个1ms的中断,用于生产系统时基。刚开始将定时器配置成Fixed Function模式,在这种模式下,中断结束后似乎没有清楚中断标志,然后会马上再次进入中断。
gongche 发表于 2015-2-28 19:02 | 显示全部楼层
用UDB模式吧
huwr 发表于 2015-2-28 19:02 | 显示全部楼层
对,并且在中断程序中添加函数isr_1_GetState();
 楼主| chenho 发表于 2015-2-28 19:03 | 显示全部楼层
那样的话中断只在上电时响应一次。从中断中退出后,系统不再进入中断。
huanghuac 发表于 2015-2-28 19:04 | 显示全部楼层
isr_1_GetState();函数,干啥的
 楼主| chenho 发表于 2015-2-28 19:04 | 显示全部楼层
说是此函数能自动清楚中断标志
happy_10 发表于 2015-2-28 19:05 | 显示全部楼层
Function Name: isr_1_GetState
********************************************************************************
* Summary:
*   Gets the state (enabled, disabled) of the Interrupt.
*
*
* Parameters:
*   void.
*
*
* Return:
*   1 if enabled, 0 if disabled.
*
*
*******************************************************************************/
uint8 isr_1_GetState(void)
{
    /* Get the state of the general interrupt. */
    return (*isr_1_INTC_SET_EN & isr_1__INTC_MASK) ? 1:0;
}
huanghuac 发表于 2015-2-28 19:06 | 显示全部楼层
看函数的代码就怎么简单,仅仅只有一个返回值,莫非其内部还有其他的机制能让程序在访问此变量的时候能自动清零?
冰清玉洁 发表于 2015-2-28 19:07 | 显示全部楼层
你应该用Timer_GetInterruptSource (void)或Timer_ReadStatusRegister (void)
冰清玉洁 发表于 2015-2-28 19:08 | 显示全部楼层

而不是isr_1_GetState(); 来清除现在的中断以允许下次timer 中断的到来
 楼主| chenho 发表于 2015-2-28 19:09 | 显示全部楼层
一语道破天机啊
 楼主| chenho 发表于 2015-2-28 19:10 | 显示全部楼层
结贴,多谢高人
598330983 发表于 2015-2-28 20:27 来自手机 | 显示全部楼层
要清理中断标志
zheng522 发表于 2015-2-28 21:58 | 显示全部楼层
一般这种问题,肯定是没有清中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

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