初级会员
- 积分
- 63
- 金钱
- 63
- 注册时间
- 2017-7-13
- 在线时间
- 13 小时
|
@原子哥你好! 我在试验GPT功能时发现个问题:在配置为比较输出模式时, 我如果三个通道都进行初始化,那么能正常进入中断, 但是,如果不初始化通道1时,则已进入1次中断后,就在也无法正常中断啦! 另外通道3 对用管脚 GPIO_AD_B0_08 也没有波形输出。 能帮我看一下是什么问题吗?
void GPT2_Int_Init(u16 psc,u32 ocrx)
{
gpio_pin_config_t gpt_io_config;
//IO1|ÄüéèÖÃ
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_08_GPT2_COMPARE3,0); //GPIO_AD_B0_03ÅäÖÃÎaALT5,¼′GPIO1_3
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_08_GPT2_COMPARE3,0x10B0);
gpt_io_config.direction=kGPIO_DigitalOutput; //êä3ö
gpt_io_config.interruptMode=kGPIO_IntLowLevel; //2»ê1óÃÖD¶Ï1|Äü
gpt_io_config.outputLogic=1; //Ĭèϸßμçƽ£¬LEDμÆ1رÕ
GPIO_PinInit(GPIO1,8,&gpt_io_config); //3õê¼»ˉGPIO1_3
GPT_GetDefaultConfig(&gpt2_onfig); //Ïè3õê¼»ˉGPT1ÎaĬèÏÖμ
gpt2_onfig.clockSource=kGPT_ClockSource_Periph; //3õê¼»ˉê±ÖóÔ′perclk_clk_root
gpt2_onfig.divider=psc; //éèÖ÷ÖÆμÖμ
GPT_Init(GPT2,&gpt2_onfig);
GPT_SetOutputCompareValue(GPT2,kGPT_OutputCompare_Channel1,ocrx); //éèÖñè½Ï¼ÆêyÖμ
GPT_EnableInterrupts(GPT2,kGPT_OutputCompare1InterruptEnable); //ê1ÄüGPT±è½Ïí¨μà1ÖD¶Ï
GPT_SetOutputCompareValue(GPT2,kGPT_OutputCompare_Channel2,ocrx); //éèÖñè½Ï¼ÆêyÖμ
GPT_EnableInterrupts(GPT2,kGPT_OutputCompare2InterruptEnable); //ê1ÄüGPT±è½Ïí¨μà1ÖD¶Ï
GPT_GetOutputOperationMode(GPT2,kGPT_OutputCompare_Channel3);
GPT_SetOutputCompareValue(GPT2,kGPT_OutputCompare_Channel3,ocrx); //éèÖñè½Ï¼ÆêyÖμ
GPT_EnableInterrupts(GPT2,kGPT_OutputCompare3InterruptEnable); //ê1ÄüGPT±è½Ïí¨μà1ÖD¶Ï
RT1052_NVIC_SetPriority(GPT2_IRQn,5,0); //ÇàÕ¼óÅÏ輶5£¬×óóÅÏ輶0
EnableIRQ(GPT2_IRQn); //ê1ÄüGPT1ÖD¶Ï
GPT_StartTimer(GPT2); //¿a꼶¨ê±Æ÷
}
//GPT1ÖD¶Ï·tÎñoˉêy
void GPT1_IRQHandler(void)
{
//OCR1ÖD¶Ï
if(GPT_GetStatusFlags(GPT1,kGPT_OutputCompare1Flag))
{
LED0_Toggle; //LED1μÆ·-×a
GPT_ClearStatusFlags(GPT1,kGPT_OutputCompare1Flag);//Çå3yÖD¶Ï±ê־λ
}
__DSB(); //êy¾Yí¬2½Æá±ÎÖ¸áî
}
void GPT2_IRQHandler(void)
{
//OCR1ÖD¶Ï
if(GPT_GetStatusFlags(GPT2,kGPT_OutputCompare1Flag))
{
LED1_Toggle; //LED1μÆ·-×a
GPT_ClearStatusFlags(GPT2,kGPT_OutputCompare1Flag);//Çå3yÖD¶Ï±ê־λ
}
if(GPT_GetStatusFlags(GPT2,kGPT_OutputCompare2Flag))
{
LED0_Toggle; //LED1μÆ·-×a
GPT_ClearStatusFlags(GPT2,kGPT_OutputCompare2Flag);//Çå3yÖD¶Ï±ê־λ
}
if(GPT_GetStatusFlags(GPT2,kGPT_OutputCompare3Flag))
{
LED0_Toggle; //LED1μÆ·-×a
GPT_ClearStatusFlags(GPT2,kGPT_OutputCompare3Flag);//Çå3yÖD¶Ï±ê־λ
}
__DSB(); //êy¾Yí¬2½Æá±ÎÖ¸áî
}
|
|