|
本帖最后由 FSL_TICS_ZJJ 于 2014-5-7 11:12 编辑
我用的是也厚的库。我在程序里加入了一个按键中断,在按键中断里使能里定时中断,但是,按下按键后要经过一段时间,定时中断才开启,这个延时让我恒苦恼。
还有就是我的按建中断只能执行一次,需要关机后才
- void main()
- {
-
- FTM_QUAD_Init(FTM1); //FTM1 正交解码初始化
-
- pit_init_ms(PIT0, 1); //初始化PIT0,定时时间为: 1000ms
-
- port_init(PTC0, ALT1 | IRQ_FALLING | PULLDOWN ); //干簧管初始化 PTC0 管脚,复用功能为GPIO ,下降沿触发中断,上拉电阻
- port_init(PTC5, ALT1 | IRQ_FALLING | PULLDOWN ); //光电管 初始化 PTC5 管脚,复用功能为GPIO ,下降沿触发中断,上拉电阻
- port_init(PTC6, ALT1 | IRQ_FALLING | PULLDOWN ); //光电管 初始化 PTC6 管脚,复用功能为GPIO ,下降沿触发中断,上拉电阻
- port_init(PTC7, ALT1 | IRQ_FALLING | PULLDOWN ); //光电管 初始化 PTC7 管脚,复用功能为GPIO ,下降沿触发中断,上拉电
- port_init(PTC14, ALT1 | IRQ_FALLING | PULLUP ); //启动初始化 PTC14管脚,复用功能为GPIO ,下降沿触发中断,上拉电阻
- port_init(PTC15, ALT1 | IRQ_FALLING | PULLUP ); //停车初始化 PTC115 管脚,复用功能为GPIO ,下降沿触发中断,上拉电
- set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler); //设置PIT0的中断复位函数为 PIT0_IRQHandler
- set_vector_handler(PORTC_VECTORn ,PORTC_IRQHandler); //设置PORTE的中断复位函数为 PORTE_IRQHandler
- set_irq_priority(PORTC_IRQn,0);
- set_irq_priority(PIT0_IRQn,1);
- enable_irq (PORTC_IRQn); //使能PORTE中断
- while(1)
- {
-
- }
- }
- /******************************************************/
- /******************************************************/
- /******************************************************/
- /******************************************************/
- /******************************************************/
- /******************************************************/
- /******************************************************/
- /****************************************************/
- void PIT0_IRQHandler(void)
- {
- int16 val1;
- PIT_Flag_Clear(PIT0); //清中断标志位
-
- val1 = FTM_QUAD_get(FTM1); //获取FTM 正交解码 的脉冲数(负数表示反方向)
- FTM_QUAD_clean(FTM1);
- System_Feed_Speed=abs(val1);//(int16)(0.15*val1);
- AD_GetValue();
- Cal_PostitionA();
- if(Cal_PostitionA()==0)
- {
- duoji_PID(); //舵机PID
- //Moto_PID();
- }
- if(Cal_PostitionA()==1)
- {
- if(AD_ZY[0]>AD_ZY[1])
- {
- FTM_PWM_Duty(S3010_FTM, S3010_CH,165+20);
- }
- if(AD_ZY[0]<AD_ZY[1])
- {
- FTM_PWM_Duty(S3010_FTM, S3010_CH,165-30);
- }
- }
- }
- /*****************************************************/
- /*******************启动和停车中断***********************************/
- /*!
- * @brief PORTD端口中断服务函数
- * @since v5.0
- */
- void PORTC_IRQHandler(void)
- {
-
- PORT_FUNC(C,14,qidong_handler); //启动
-
- /
- void qidong_handler(void)
- {
-
- DELAY_MS(2000);
- enable_irq (PIT0_IRQn); //使能PIT0中断
- FTM_PWM_Duty(MOTOR_FTM, MOTOR1_PWM,70);
- FTM_PWM_Duty(MOTOR_FTM, MOTOR2_PWM,70);
- }
复制代码 能执行下一次。求组啊 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|