打印
[技术问答]

HC32L136的脉冲宽度测量

[复制链接]
1382|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
官方没有提供类似操作的参考吗

使用特权

评论回复
5
merry_zsp| | 2020-4-29 15:22 | 只看该作者
同意楼上的,请参考官方的基础例程,并实时跟踪寄存器的值。

使用特权

评论回复
6
幸福小强| | 2020-4-30 19:57 | 只看该作者
这点代码看不出毛病。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝