你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
stm32定时器tim10、11、13、14一起使用出现问题
[复制链接]
逍遥九剑
提问时间:2014-11-15 10:07 /
问答
是否解决:
大家有没有用过stm32f405的tim10、11、13、14,我用这几路的ch1来测量四路PWM,结果出现问题,只有tim13能正常测量,其他的都无法进入中断
赞
0
收藏
0
评论
3
分享
发布时间:2014-11-15 10:07
举报
请先
登录
后回复
3个回答
逍遥九剑
回答时间:2014-11-15 10:09:00
a0a.1 32b0c
附上代码:
static void PPM_Configure_TIME10_11_13_14(void)
{
uint16_t PrescalerValue_APB1 = 0;
uint16_t PrescalerValue_APB2 = 0;
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* CLK = 168000000/(PrescalerValue+1) = 1000000hz = 1us */
PrescalerValue_APB1 = (uint16_t) ((SystemCoreClock / PPM_FREQ) / 2) - 1;
PrescalerValue_APB2 = (uint16_t) (SystemCoreClock / PPM_FREQ) - 1;
/************************* TIM 10 *************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB2;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM10, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM10, &TIM_ICInitStructure);
/************************* TIM 11 *************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM11, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB2;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM11, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM11, &TIM_ICInitStructure);
/************************* TIM 13 *************************/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM13, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM13, &TIM_ICInitStructure);
/************************* TIM 14 *************************/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM14, &TIM_ICInitStructure);
/************************* TIM enable counter *************************/
TIM_Cmd(TIM10, ENABLE);
TIM_Cmd(TIM11, ENABLE);
TIM_Cmd(TIM13, ENABLE);
TIM_Cmd(TIM14, ENABLE);
/************************* Enable the CCx Interrupt Request *************************/
TIM_ITConfig(TIM10, TIM_IT_CC1, ENABLE); //PPM_CH1
TIM_ITConfig(TIM11, TIM_IT_CC1, ENABLE); //PPM_CH2
TIM_ITConfig(TIM13, TIM_IT_CC1, ENABLE); //PPM_CH6
TIM_ITConfig(TIM14, TIM_IT_CC1, ENABLE); //PPM_CH5
}
static void PPM_Configure_NVIC_TIMER(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* NVIC_PriorityGroup */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //0~f
NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_TIM10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_TRG_COM_TIM11_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_TIM13_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM8_TRG_COM_TIM14_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH1
*
* Description : PPM CH1
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH1(void)
{
if(TIM10->SR & TIM_IT_CC1)
{
TIM10->SR &= ~TIM_FLAG_CC1;
TIM10->SR &= ~TIM_FLAG_CC1OF;
if(GPIOB->IDR & GPIO_Pin_8) /*PPM CH1 if PB.8 is high Rising*/
timer10_ccr1 = TIM10->CCR1;
else
{
if((TIM10->CCR1) < timer10_ccr1)
PPM_Channel_Table[0] = PPM_PEIOD_DUTY - timer10_ccr1 + TIM10->CCR1;
else
PPM_Channel_Table[0] = TIM10->CCR1 - timer10_ccr1;
}
}
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH2
*
* Description : PPM CH2
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH2(void)
{
if(TIM11->SR & TIM_IT_CC1)
{
TIM11->SR &= ~TIM_FLAG_CC1;
TIM11->SR &= ~TIM_FLAG_CC1OF;
if(GPIOB->IDR & GPIO_Pin_9) /*PPM CH2 if PB.9 is high Rising*/
timer11_ccr1 = TIM11->CCR1;
else
{
if((TIM11->CCR1) < timer11_ccr1)
PPM_Channel_Table[1] = PPM_PEIOD_DUTY - timer11_ccr1 + TIM11->CCR1;
else
PPM_Channel_Table[1] = TIM11->CCR1 - timer11_ccr1;
}
}
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH5
*
* Description : PPM CH5
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH5(void)
{
if(TIM14->SR & TIM_IT_CC1)
{
TIM14->SR &= ~TIM_FLAG_CC1;
TIM14->SR &= ~TIM_FLAG_CC1OF;
if(GPIOA->IDR & GPIO_Pin_7) /*PPM CH5 if PA.7 is high Rising*/
timer14_ccr1 = TIM14->CCR1;
else
{
if((TIM14->CCR1) < timer14_ccr1)
PPM_Channel_Table[4] = PPM_PEIOD_DUTY - timer14_ccr1 + TIM14->CCR1;
else
PPM_Channel_Table[4] = TIM14->CCR1 - timer14_ccr1;
}
}
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH6
*
* Description : PPM CH6
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH6(void)
{
if(TIM13->SR & TIM_IT_CC1)
{
TIM13->SR &= ~TIM_FLAG_CC1;
TIM13->SR &= ~TIM_FLAG_CC1OF;
if(GPIOA->IDR & GPIO_Pin_6) /*PPM CH6 if PA.6 is high Rising*/
timer13_ccr1 = TIM13->CCR1;
else
{
if((TIM13->CCR1) < timer13_ccr1)
PPM_Channel_Table[5] = PPM_PEIOD_DUTY - timer13_ccr1 + TIM13->CCR1;
else
PPM_Channel_Table[5] = TIM13->CCR1 - timer13_ccr1;
}
}
}
赞
0
评论
回复
支持
反对
沐紫
回答时间:2014-11-18 14:13:13
a0a.1 32b0c
代码比较长,麻烦各位朋友帮忙看看
赞
0
评论
回复
支持
反对
安
回答时间:2014-11-18 16:46:36
a0a.1 32b0c
把NVIC的优先级错开呢?现在是同时在产生中断,楼主可以考虑先只开一个中断,确认中断正常工作,然后再根据不同的优先顺序来设置优先级。
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
static void PPM_Configure_TIME10_11_13_14(void)
{
uint16_t PrescalerValue_APB1 = 0;
uint16_t PrescalerValue_APB2 = 0;
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* CLK = 168000000/(PrescalerValue+1) = 1000000hz = 1us */
PrescalerValue_APB1 = (uint16_t) ((SystemCoreClock / PPM_FREQ) / 2) - 1;
PrescalerValue_APB2 = (uint16_t) (SystemCoreClock / PPM_FREQ) - 1;
/************************* TIM 10 *************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB2;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM10, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM10, &TIM_ICInitStructure);
/************************* TIM 11 *************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM11, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB2;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM11, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM11, &TIM_ICInitStructure);
/************************* TIM 13 *************************/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM13, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM13, &TIM_ICInitStructure);
/************************* TIM 14 *************************/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = PPM_PEIOD_DUTY;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue_APB1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
/* TIM_Channel_1 */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM14, &TIM_ICInitStructure);
/************************* TIM enable counter *************************/
TIM_Cmd(TIM10, ENABLE);
TIM_Cmd(TIM11, ENABLE);
TIM_Cmd(TIM13, ENABLE);
TIM_Cmd(TIM14, ENABLE);
/************************* Enable the CCx Interrupt Request *************************/
TIM_ITConfig(TIM10, TIM_IT_CC1, ENABLE); //PPM_CH1
TIM_ITConfig(TIM11, TIM_IT_CC1, ENABLE); //PPM_CH2
TIM_ITConfig(TIM13, TIM_IT_CC1, ENABLE); //PPM_CH6
TIM_ITConfig(TIM14, TIM_IT_CC1, ENABLE); //PPM_CH5
}
static void PPM_Configure_NVIC_TIMER(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* NVIC_PriorityGroup */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //0~f
NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_TIM10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_TRG_COM_TIM11_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_TIM13_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM8_TRG_COM_TIM14_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH1
*
* Description : PPM CH1
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH1(void)
{
if(TIM10->SR & TIM_IT_CC1)
{
TIM10->SR &= ~TIM_FLAG_CC1;
TIM10->SR &= ~TIM_FLAG_CC1OF;
if(GPIOB->IDR & GPIO_Pin_8) /*PPM CH1 if PB.8 is high Rising*/
timer10_ccr1 = TIM10->CCR1;
else
{
if((TIM10->CCR1) < timer10_ccr1)
PPM_Channel_Table[0] = PPM_PEIOD_DUTY - timer10_ccr1 + TIM10->CCR1;
else
PPM_Channel_Table[0] = TIM10->CCR1 - timer10_ccr1;
}
}
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH2
*
* Description : PPM CH2
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH2(void)
{
if(TIM11->SR & TIM_IT_CC1)
{
TIM11->SR &= ~TIM_FLAG_CC1;
TIM11->SR &= ~TIM_FLAG_CC1OF;
if(GPIOB->IDR & GPIO_Pin_9) /*PPM CH2 if PB.9 is high Rising*/
timer11_ccr1 = TIM11->CCR1;
else
{
if((TIM11->CCR1) < timer11_ccr1)
PPM_Channel_Table[1] = PPM_PEIOD_DUTY - timer11_ccr1 + TIM11->CCR1;
else
PPM_Channel_Table[1] = TIM11->CCR1 - timer11_ccr1;
}
}
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH5
*
* Description : PPM CH5
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH5(void)
{
if(TIM14->SR & TIM_IT_CC1)
{
TIM14->SR &= ~TIM_FLAG_CC1;
TIM14->SR &= ~TIM_FLAG_CC1OF;
if(GPIOA->IDR & GPIO_Pin_7) /*PPM CH5 if PA.7 is high Rising*/
timer14_ccr1 = TIM14->CCR1;
else
{
if((TIM14->CCR1) < timer14_ccr1)
PPM_Channel_Table[4] = PPM_PEIOD_DUTY - timer14_ccr1 + TIM14->CCR1;
else
PPM_Channel_Table[4] = TIM14->CCR1 - timer14_ccr1;
}
}
}
/*
*********************************************************************************************************
* PPM_IRQHandler_CH6
*
* Description : PPM CH6
*
* Arguments :
*
* Returns : none
*
* Notes : none
*
*********************************************************************************************************
*/
extern void PPM_IRQHandler_CH6(void)
{
if(TIM13->SR & TIM_IT_CC1)
{
TIM13->SR &= ~TIM_FLAG_CC1;
TIM13->SR &= ~TIM_FLAG_CC1OF;
if(GPIOA->IDR & GPIO_Pin_6) /*PPM CH6 if PA.6 is high Rising*/
timer13_ccr1 = TIM13->CCR1;
else
{
if((TIM13->CCR1) < timer13_ccr1)
PPM_Channel_Table[5] = PPM_PEIOD_DUTY - timer13_ccr1 + TIM13->CCR1;
else
PPM_Channel_Table[5] = TIM13->CCR1 - timer13_ccr1;
}
}
}