打印

马上再次进入中断

[复制链接]
699|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 | 只看该作者
那样的话中断只在上电时响应一次。从中断中退出后,系统不再进入中断。

使用特权

评论回复
5
huanghuac| | 2015-2-28 19:04 | 只看该作者
isr_1_GetState();函数,干啥的

使用特权

评论回复
6
chenho|  楼主 | 2015-2-28 19:04 | 只看该作者
说是此函数能自动清楚中断标志

使用特权

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

使用特权

评论回复
8
huanghuac| | 2015-2-28 19:06 | 只看该作者
看函数的代码就怎么简单,仅仅只有一个返回值,莫非其内部还有其他的机制能让程序在访问此变量的时候能自动清零?

使用特权

评论回复
9
冰清玉洁| | 2015-2-28 19:07 | 只看该作者
你应该用Timer_GetInterruptSource (void)或Timer_ReadStatusRegister (void)

使用特权

评论回复
10
冰清玉洁| | 2015-2-28 19:08 | 只看该作者

而不是isr_1_GetState(); 来清除现在的中断以允许下次timer 中断的到来

使用特权

评论回复
11
chenho|  楼主 | 2015-2-28 19:09 | 只看该作者
一语道破天机啊

使用特权

评论回复
12
chenho|  楼主 | 2015-2-28 19:10 | 只看该作者
结贴,多谢高人

使用特权

评论回复
13
598330983| | 2015-2-28 20:27 | 只看该作者
要清理中断标志

使用特权

评论回复
14
zheng522| | 2015-2-28 21:58 | 只看该作者
一般这种问题,肯定是没有清中断

使用特权

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

本版积分规则

748

主题

9853

帖子

5

粉丝