牛卧堂MCU技术交流
标题:
关于TIMER0捕获一直为零
[打印本页]
作者:
laosun2008
时间:
2017-5-8 09:32
标题:
关于TIMER0捕获一直为零
本帖最后由 laosun2008 于 2017-5-8 15:41 编辑
我在T0_EXT(PA7)上装了一个按键,每次按键触发CAPIF中断好几次,并且捕获值一直为零
主函数代码如下:int32_t main(void)
{
//初始始化部份省略
NVIC_EnableIRQ(TMR0_IRQn);
TIMER_Open(TIMER0, TIMER_CONTINUOUS_MODE, 1);
TIMER_SET_PRESCALE_VALUE(TIMER0, 0);
TIMER_SET_CMP_VALUE(TIMER0, 0xFFFFFF);
TIMER_EnableEventCounter(TIMER0, TIMER_COUNTER_FALLING_EDGE);//使能事件计 数模式
TIMER_EnableCapture(TIMER0, TIMER_CAPTURE_FREE_COUNTING_MODE, TIMER_CAPTURE_FALLING_EDGE);//使能捕获模式
TIMER_EnableCaptureDebounce(TIMER0); TIMER_EnableInt(TIMER0);
TIMER_EnableCaptureInt(TIMER0);
TIMER_Start(TIMER0);
for(;;);
return 0;
}
中断函数
static int cnt=0;
void TMR0_IRQHandler(void)
{
if(TIMER_GetCaptureIntFlag(TIMER0) == 1)
{
uint32_t au32CAPValue;
/* Clear Timer0 capture trigger interrupt flag */
au32CAPValue = TIMER_GetCaptureData(TIMER0)
TIMER_ClearCaptureIntFlag(TIMER0);
printf("capture int_cnt=%d , captureVal=%d \n",cnt++,au32CAPValue);
}
}
下面是芯片运行时的引脚状态图
11.png
(221 KB, 下载次数: 355)
下载附件
2017-5-8 09:26 上传
作者:
a_ziliu
时间:
2017-5-8 13:31
timer 0的clock source怎麼設置的,可以看一下設定嗎?
作者:
laosun2008
时间:
2017-5-8 15:37
CLK_EnableModuleClock(TMR0_MODULE);
CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HIRC, 0);
SYS->GPA_MFPL &= ~SYS_GPA_MFPL_PA7MFP_Msk;
SYS->GPA_MFPL |= SYS_GPA_MFPL_PA7MFP_T0_EXT;
作者:
a_ziliu
时间:
2017-5-9 09:33
把你的例子跟官方的比。
你多了這一行TIMER_EnableCaptureDebounce
移除試看看吧
欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/)
Powered by Discuz! X3.2