用定时器3,测量PB04端口的脉冲宽度测量,一直不能进中断,大家帮忙看看哪有问题
M0P_SYSCTRL->PERI_CLKEN_f.GPIO=1;//开时钟配置IO
//定时器3设置
// M0P_GPIO->TIMCPS_f.TIM3_CB=6;
// M0P_GPIO->TIMES_f.LPTIM_E=5;
M0P_SYSCTRL->PERI_CLKEN_f.TIM3=1;//开时钟
M0P_GPIO->PBADS_f.PB04=1; //AIN19
M0P_GPIO->PB04_SEL_f.SEL=6; //PB04选择TIM3_CH0B
M0P_TIM3_MODE1->M1CR_f.MODE=1; //模式1
M0P_TIM3_MODE1->MSCR_f.IB0S=0; //CH0B输入
M0P_TIM3_MODE1->M1CR_f.EDG2ND=1; //
M0P_TIM3_MODE1->M1CR_f.EDG1ST=1;
M0P_TIM3_MODE1->M1CR_f.PRS=3; //分频
M0P_TIM3_MODE1->ICLR_f.UIF=0; //清除中断标志
M0P_TIM3_MODE1->M1CR_f.UIE=1; //中断使能
M0P_TIM3_MODE1->CR0_f.CIEA=1;
M0P_TIM3_MODE1->M1CR_f.CTEN=1; //定时器使能
// M0P_TIM2_MODE0->M0CR_f.PRS=7; //时钟分频4
// M0P_TIM2_MODE0->M0CR_f.MD=1; //32/16模式.16
NVIC_SetPriority(TIM3_IRQn,1);//设置中断优先
NVIC_EnableIRQ(TIM3_IRQn);//开定时器1中断
void TIM3_IRQHandler(void)
{
if(M0P_TIM3_MODE1->IFR_f.CA0F==1)
{
h=M0P_TIM3_MODE1->CCR0A_f.CCR0A;
M0P_TIM3_MODE1->ICLR_f.CA0F=0; //清除中断标志
}
if(M0P_TIM3_MODE1->IFR_f.UIF==1)
{
M0P_TIM3_MODE1->ICLR_f.UIF=0; //清除中断标志
cxw++;
}
}
|