打印

[技术问答] PWM输入捕获没有搞懂这句

[复制链接]
376|10
跳转到指定楼层
楼主
本帖最后由 feiante 于 2019-8-6 14:51 编辑

在PWM输入捕获的官方例子中,有这样一句话:
/* Wait for Capture Falling Indicator */
        while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);
/* Wait for Capture Rising Indicator */
        while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);
为什么同样的语句,一个是等待下降沿中断标志,一个是等待上升沿中断标志?
PWM_GetCaptureIntFlag的返回值:0:无捕获中断,1:上升沿  2:下降沿  3:上升和下降沿。如何配合上面的<2 进行理解呢还有就是输入捕获中PWM_ConfigCaptureChannel(PWM1, 2, 69, 0); 其中69为Capture unit time,它是干什么用的?

沙发
| 2019-8-7 09:05 | 只看该作者
这些东西要对应手册看,看这些参数写入到哪个寄存器去了
板凳
| 2019-8-7 23:49 | 只看该作者
这两句是连着的吗,难道前面么有设置语句?
地板
| 2019-8-7 23:51 | 只看该作者
  /* Clear Capture Falling Indicator (Time B)*/
    PWM_ClearCaptureIntFlag(PWM, u32Ch, PWM_CAPTURE_INT_FALLING_LATCH);

    u32i = 0;

    while(u32i < 4)
    {
        /* Wait for Capture Falling Indicator */
        while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);

        /* Clear Capture Falling and Rising Indicator */
        PWM_ClearCaptureIntFlag(PWM, u32Ch, PWM_CAPTURE_INT_FALLING_LATCH | PWM_CAPTURE_INT_RISING_LATCH);

        /* Get Capture Falling Latch Counter Data */
        u32Count[u32i++] = PWM_GET_CAPTURE_FALLING_DATA(PWM, u32Ch);

        /* Wait for Capture Rising Indicator */
        while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);
5
| 2019-8-7 23:52 | 只看该作者
是上面这段代码吧,你看循环前面,是先清除下降沿指示,然后等下降沿信号,进入已经下降完成了,那么接着肯定要上升沿了,下降到0,不可能再下降,再生就是上升信号。
6
| 2019-8-7 23:53 | 只看该作者
另外在上升沿前面进行了配置。在循环前面有个等待下降信号的死循环,你注意到没。
7
| 2019-8-7 23:54 | 只看该作者
  1.    /* Wait for Capture Falling Indicator  */
  2.     while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);

  3.     /* Clear Capture Falling Indicator (Time B)*/
  4.     PWM_ClearCaptureIntFlag(PWM, u32Ch, PWM_CAPTURE_INT_FALLING_LATCH);

  5.     u32i = 0;

  6.     while(u32i < 4)
  7.     {
  8.         /* Wait for Capture Falling Indicator */
  9.         while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);

  10.         /* Clear Capture Falling and Rising Indicator */
  11.         PWM_ClearCaptureIntFlag(PWM, u32Ch, PWM_CAPTURE_INT_FALLING_LATCH | PWM_CAPTURE_INT_RISING_LATCH);

  12.         /* Get Capture Falling Latch Counter Data */
  13.         u32Count[u32i++] = PWM_GET_CAPTURE_FALLING_DATA(PWM, u32Ch);

  14.         /* Wait for Capture Rising Indicator */
  15.         while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);

  16.         /* Clear Capture Rising Indicator */
  17.         PWM_ClearCaptureIntFlag(PWM, u32Ch, PWM_CAPTURE_INT_RISING_LATCH);

  18.         /* Get Capture Rising Latch Counter Data */
  19.         u32Count[u32i++] = PWM_GET_CAPTURE_RISING_DATA(PWM, u32Ch);
  20.     }
复制代码
8
| 2019-8-7 23:54 | 只看该作者
   /* Wait for Capture Falling Indicator  */
    while(PWM_GetCaptureIntFlag(PWM, u32Ch) < 2);
这个死循环,等待一个下降的信号
9
| 2019-8-7 23:55 | 只看该作者
后面下降后,肯定要是来上升信号的你可以画一下理解理解。
10
| 2019-8-8 22:56 | 只看该作者
楼上说的是,没什么问题。
11
| 2019-8-8 22:57 | 只看该作者
是楼主没搞清楚这个检测的过程。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表
pc蛋蛋官方网站 pc蛋蛋注册 pc蛋蛋网址 pc蛋蛋官方网址 pc蛋蛋官方网站 pc蛋蛋官网 pc蛋蛋官方网站 pc蛋蛋平台 pc蛋蛋官方网址 pc蛋蛋官方网址