[技术问答] HC32L136的脉冲宽度测量

[复制链接]
 楼主| npzy 发表于 2019-12-19 19:20 | 显示全部楼层 |阅读模式
用定时器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++;
        }       
}









mcu430 发表于 2020-4-27 15:24 | 显示全部楼层
有没有倍触发呢
zhuotuzi 发表于 2020-4-28 21:59 | 显示全部楼层
定时器捕获。如果频率低,脉冲宽,计时器都可以用。
643757107 发表于 2020-4-28 22:00 | 显示全部楼层
官方没有提供类似操作的参考吗
merry_zsp 发表于 2020-4-29 15:22 | 显示全部楼层
同意楼上的,请参考官方的基础例程,并实时跟踪寄存器的值。
幸福小强 发表于 2020-4-30 19:57 | 显示全部楼层
这点代码看不出毛病。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 返回顶部 返回列表