您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF518用通用定时器捕获脉冲宽度和周期的问题... 
本帖共有424个阅读者
发表帖子 发表投票 回复主题
BF518用通用定时器捕获脉冲宽度和周期的问题
05cjb(论坛新手)
05cjb
头衔:社区公民
帮派:无帮无派
帖数:1
金钱:112
积分:2
注册时间:2014/3/14
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF518用通用定时器捕获脉冲宽度和周期的问题
准备将BF518的PG4引脚用作TIMR5,用来捕获输入脉冲的宽度和周期,但是PG4引脚有输入脉冲时,总进入不了中断程序,大家帮我分析分析。下面是我的程序。

       void GPIO_ini()
{
        *pPORTG_FER = 0x0017; //PG0--PG2作为EMAC引脚使用,PG4用作TMR5
ssync();
*pPORTG_MUX &= 0xFFEC;
ssync();

}





EX_INTERRUPT_HANDLER(GP_IRQ_TIMER5)
{
Uint32 u32Pulse_Width ,u32Pulse_Periods;
*pTIMER_STATUS  = TIMIL5;
u32Pulse_Width = *pTIMER5_WIDTH;
u32Pulse_Periods =*pTIMER5_PERIOD;
if((u32Pulse_Width >= 995000)&&(u32Pulse_Width <= 1005000))
{
if(u32Pulse_Width == (u32Pulse_Periods/2))
{
ucIrigB_State = 1;
}
}
}


// 通用定时器初始化。
void  Ini_GP_Timer(void)
{
*pTIMER5_CONFIG = EMU_RUN|IRQ_ENA|PERIOD_CNT|PULSE_HI|WDTH_CAP;
ssync();
*pIMASK |= (1<<12); ssync();
*pILAT |= (1<<12);ssync();
         *pSIC_IMASK1 |= 0x00000020; ssync();
*pSIC_IAR4  = 0xff5fffff;
ssync();
register_handler(ik_ivg12, GP_IRQ_TIMER5);
  ssync();
  *pILAT |=  EVT_IVG12 ; ssync();
*pTIMER_ENABLE |= TIMEN5;
  ssync();
}




这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/14 15:31:06
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你配置寄存器时,用直接赋值,不要用 “|” 试试。有的寄存器可能是只读的,用“|”可能配置会错误,另外配置完后用寄存器菜单看一下,配置的值是否都正确。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/3/15 23:10:13
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159171 Call, 1 Queries, Processed in 0.015625 second(s),