打印

有关PSOC3的定时器设置问题

[复制链接]
3104|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大侠,小弟在用PSOC3的定时器,出现了一下问题,望各位大侠指点一二:

想用定时器产生一个1ms的中断,用于生产系统时基。刚开始将定时器配置成Fixed Function模式,在这种模式下,中断结束后似乎没有清楚中断标志,然后会马上再次进入中断。跟CYPRESS的FAE咨询了一下,对方告之在现在的芯片上使用Fixed模式都会有现在的问题,说是11月份新出的IC会改进这个BUG。

然后FAE建议使用UDB模式,并且在中断程序中添加函数isr_1_GetState();按照FAE的指点修正后,发现现在的中断只在上电时响应一次。从中断中退出后,系统不再进入中断。

现向各位求救,望大侠们不吝赐教!

我将配置表和中断程序附上。

沙发
错意_相逢|  楼主 | 2010-11-4 12:22 | 只看该作者
有关isr_1_GetState();函数。

FAE说此函数能自动清楚中断标志,可我时钟没有看明白它是怎么自动清楚的。
/*******************************************************************************
* 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;
}

看函数的代码就怎么简单,仅仅只有一个返回值,莫非其内部还有其他的机制能让程序在访问此变量的时候能自动清零?
这个问题也是百思不得其解。
其高人们顺便解释一下。

使用特权

评论回复
板凳
yufe| | 2010-11-4 14:31 | 只看该作者
确实很奇怪啊

使用特权

评论回复
地板
jxin| | 2010-11-5 18:25 | 只看该作者
你应该用Timer_GetInterruptSource (void)或Timer_ReadStatusRegister (void)而不是isr_1_GetState(); 来清除现在的中断以允许下次timer 中断的到来

使用特权

评论回复
5
错意_相逢|  楼主 | 2010-11-6 09:28 | 只看该作者
4# jxin

高人,搞定了,非常感谢

使用特权

评论回复
6
guoyt| | 2011-9-14 13:33 | 只看该作者
一语道破天机啊

使用特权

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

本版积分规则

0

主题

4

帖子

1

粉丝