高级会员
- 积分
- 819
- 威望
- 449
- 贡献
- 158
- 兑换币
- 4
- 注册时间
- 2012-3-1
- 在线时间
- 107 小时
|
5贡献
我们在用K60写输入捕捉函数,也是按照芯片手册上配置的,不知道哪里出了问题。
int main(void)
{
DisableInterrupts;
DELAY_Init(48);//初始化延时函数
GPIO_Init(PTA,15,1,0);//PTA15是led灯
pll_init();//锁相环初始化
FTM_Init();//FTM初始化
EnableInterrupts;
for(;;)
{
}
}
void isr_FTM0(void)//中断函数
{
if((FTM0_C0SC>>7)|0==1)//如果FTM0有中断标志
{
GPIO_Init(PTA,15,1,1);//把led灯灭掉
DELAY_Ms(50);
return;
}
else
{GPIO_Init(PTA,15,1,1); //灭灯
return;}
}
void FTM_Init(void)
{
SIM_SCGC5 |= (1 << 11| 1<< 12);//开 PTC PTD时钟
PORTC_PCR1= PORT_PCR_MUX(4); // 设置引脚 C1引脚为FTM0_CH0功能
SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0时钟
FTM0_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止
FTM0_C0SC |=FTM_CnSC_ELSA_MASK;//设置通道0为捕捉上升沿
FTM0_C0SC &= ~FTM_CnSC_MSA_MASK;
FTM0_C0SC &= ~FTM_CnSC_ELSB_MASK;
FTM0_C0SC &= ~FTM_CnSC_MSB_MASK;
FTM0_C0SC|=FTM_CnSC_CHIE_MASK;//使能通道0中断
enable_irq(78);
FTM0_MODE|=0x10;//捕捉测试模式允许位
FTM0_SC=0x0c;//中断禁止,时钟源来自总线时钟48MHz,16分频后得到3MHz,CLKS=01,PS=100,CPWMS=0,递增计数
FTM0_MODE &= ~FTM_MODE_FTMEN_MASK;//FTM0使能
FTM0_OUTMASK=0X0;//全部通道输出
FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;//禁止正交解码模式
FTM0_SC&=~0x80;//清定时器溢出标志位
FTM0_SC&=~0x40;//禁止定时器溢出中断
}
也就是说只要进了FTM0中断,灯就会灭 但是它却一直亮着 求高手指点!
|
|