void ConfigHeatController(uint16_t pta0_pulseWidth,uint16_t pta1_pulseWidth)
{
uint8_t u8ChanelNum;
FTM_Type* pFTM;
InitUartCommand(HeatControllerRecvOneChar);
g_flag = 0;
pFTM = FTM2;
while(1)
{
WaitEventSet();
//重映射管脚
switch(g_flag)
{
//ftm2
case '1':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH0ToPTC0();
u8ChanelNum = 0;
break;
case '2':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH0ToPTF0();
u8ChanelNum = 0;
break;
case '3':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH0ToPTH0();
u8ChanelNum = 0;
break;
case '4':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH1ToPTC1();
u8ChanelNum = 1;
break;
case '5':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH1ToPTF1();
u8ChanelNum = 1;
break;
case '6':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH1ToPTH1();
u8ChanelNum = 1;
break;
case '7':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH2ToPTC2();
u8ChanelNum = 2;
break;
case '8':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH2ToPTD0();
u8ChanelNum = 2;
break;
case '9':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH2ToPTG4();
u8ChanelNum = 2;
break;
case 'a':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH3ToPTC3();
u8ChanelNum = 3;
break;
case 'b':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH3ToPTD1();
u8ChanelNum = 3;
break;
case 'c':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH3ToPTG5();
u8ChanelNum = 3;
break;
case 'd':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH4ToPTB4();
u8ChanelNum = 4;
break;
case 'e':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH4ToPTG6();
u8ChanelNum = 4;
break;
case 'f':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH5ToPTB5();
u8ChanelNum = 5;
break;
case 'g':
pFTM = FTM2;
irqn = FTM2_IRQn;
SIM_RemapFTM2CH5ToPTG7();
u8ChanelNum = 5;
break;
//ftm0
case 'h':
pFTM = FTM0;
irqn = FTM0_IRQn;
SIM_RemapFTM0CH0ToPTA0();
u8ChanelNum = 0;
break;
case 'i':
pFTM = FTM0;
irqn = FTM0_IRQn;
SIM_RemapFTM0CH0ToPTB2();
u8ChanelNum = 0;
break;
case 'j':
pFTM = FTM0;
irqn = FTM0_IRQn;
SIM_RemapFTM0CH0ToPTB2();
u8ChanelNum = 0;
break;
case 'k':
pFTM = FTM0;
irqn = FTM0_IRQn;
SIM_RemapFTM0CH1ToPTA1();
u8ChanelNum = 1;
break;
case 'l':
pFTM = FTM0;
irqn = FTM0_IRQn;
SIM_RemapFTM0CH1ToPTB3();
u8ChanelNum = 1;
break;
//ftm1
case 'm':
pFTM = FTM1;
irqn = FTM1_IRQn;
SIM_RemapFTM1CH0ToPTC4();
u8ChanelNum = 0;
break;
case 'n':
pFTM = FTM1;
irqn = FTM1_IRQn;
SIM_RemapFTM1CH0ToPTH2();
u8ChanelNum = 0;
break;
case 'o':
pFTM = FTM1;
irqn = FTM1_IRQn;
SIM_RemapFTM1CH1ToPTC5();
u8ChanelNum = 1;
break;
case 'p':
pFTM = FTM1;
irqn = FTM1_IRQn;
SIM_RemapFTM1CH1ToPTE7();
u8ChanelNum = 1;
break;
default:
break;
}
ResetEvent();
/* FTM2 is set as edge aligned pwm mode, high true pulse */
FTM_PWMInit(pFTM, FTM_PWMMODE_EDGEALLIGNED, FTM_PWM_HIGHTRUEPULSE);
/* FTMEN enable */
FTM_SetFTMEnhanced(pFTM);
/* update MOD value FTM09999表示周期为 9999-0+1个系统时钟周期,即10000*(1/40)us=250us*/
FTM_SetModValue(pFTM, MOD_MAX);
//设置脉宽、初始状态为高
pFTM->CONTROLS[u8ChanelNum].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;
//FTM_NO->CONTROLS[1].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;
pFTM->CONTROLS[u8ChanelNum].CnV = pta0_pulseWidth;
//FTM_NO->CONTROLS[1].CnV = pta1_pulseWidth;
/* set clock source, start counter */
FTM_ClockSet(pFTM, FTM_CLOCK_SYSTEMCLOCK, FTM_CLOCK_PS_DIV1);
}
}
|