void cap_init(void)
{
en_adt_unit_t enAdt;
uint16_t u16Period;
stc_adt_basecnt_cfg_t stcAdtBaseCntCfg;
stc_adt_CHxX_port_cfg_t stcAdtTIM5ACfg;
DDL_ZERO_STRUCT(stcAdt5CntState);
DDL_ZERO_STRUCT(stcAdtBaseCntCfg);
DDL_ZERO_STRUCT(stcAdtTIM5ACfg);
Gpio_SetFunc_TIM5_CHA_P34();
Clk_SetPeripheralGate(ClkPeripheralAdt, TRUE);
enAdt = AdTIM5;
stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode;
stcAdtBaseCntCfg.enCntDir = AdtCntUp;
stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div2;
Adt_Init(enAdt, &stcAdtBaseCntCfg); //ADT载波、计数模式、时钟配置
u16Period = 0xffff;
Adt_SetPeriod(enAdt, u16Period); //周期设置
stcAdtTIM5ACfg.enCap = AdtCHxCompareInput;
Adt_CHxXPortConfig(enAdt, AdtCHxA, &stcAdtTIM5ACfg); //端口CHA配置,捕获输入功能
Adt_ConfigHwCaptureA(enAdt,AdtHwTrigTimxAFall); //< CHxA端口上采样到下降沿
// Adt_ConfigHwCaptureA(enAdt,AdtHwTrigTimxARise); //< CHxA端口上采样到上升沿
Adt_ConfigIrq(enAdt, AdtCMAIrq, TRUE, Adt5CaptureACalllback); //捕获中断A配置
EnableNvic(TIM5_IRQn, 3, TRUE); //AdvTimer5中断使能
Adt_StartCount(enAdt);
}
void Adt5CaptureACalllback(void)
{
Adt_GetCaptureValue(AdTIM5, AdtCHxA, &u16Capture);
//Adt_GetCntState(AdTIM5, &stcAdt5CntState);
//Adt_ConfigHwCaptureA(enAdt,AdtHwTrigTimxARise); //< CHxA端口上采样到上升沿
//Adt_ClearPeriodBuf(AdTIM5);
//Adt_ClearHwCaptureA(AdTIM5);
Adt_ClearIrqFlag(AdTIM5,AdtCMAIrq);
}
|