大学生
最后登录1970-1-1
在线时间 小时
注册时间2014-5-13
|
void main()
{
DisableInterrupts;
LED_INIT();
FTM_Input_init(FTM1, CH0, Rising); //初始化FTM输入捕捉模式,上升沿触发
EnableInterrupts; //开总中断
while(1)
{
gpio_set(PORTA,13,LOW); //PTA9 产生低电平
time_delay_ms(1000); //延时一下
gpio_set(PORTA,13,HIGH); //PTA9 产生高电平
time_delay_ms(1000);
}
}
void FTM1_IRQHandler()
{
u8 s = FTM1_STATUS; //读取捕捉和比较状态 All CHnF bits can be checked using only one read of STATUS.
u8 CHn;
FTM1_STATUS = 0x00; //清中断标志位
CHn = 0;
if( s & (1 << CHn) )
{
FTM_IRQ_DIS(FTM1, CHn); //禁止输入捕捉中断
/* 用户任务 */
LED_turn(LED0);
/*********************/
//不建议在这里开启输入捕捉中断,而是在main函数里根据需要来开启
//通道 CH0、CH1、Ch2、Ch3 有滤波器
FTM_IRQ_EN(FTM1, CHn); //开启输入捕捉中断
//delayms(10); //因为输入的信号跳变过程不稳定,容易触发多次输入捕捉,所以添加延时
//但考虑到中断不应该过长延时,所以开输入捕捉中断就放在main函数里,根据需要来开启
}
/* 这里添加 n=1 的模版,根据模版来添加 */
CHn = 1;
if( s & (1 << CHn) )
{
FTM_CnSC_REG(FTM1_BASE_PTR, CHn) &= ~FTM_CnSC_CHIE_MASK; //禁止输入捕捉中断
/* 用户任务 */
/*********************/
//不建议在这里开启输入捕捉中断
//FTM_CnSC_REG(FTM1_BASE_PTR,n) |= FTM_CnSC_CHIE_MASK; //开启输入捕捉中断
}
}
|
|