我正在使用捕获驱动程序、但似乎无法获得正确的结果。 我有一个设置为脉冲1ms 的引脚、我已将其连接到我的捕获引脚。 我已经验证了示波器上的脉冲。 但是、下面的代码测量上升沿(将其设置为1)和下降沿(将其设置为0)之间的时间为~ 160900us。 我预期、因为存在1ms 的延迟、而这是~ 160ms。 有什么想法、我在这里做了什么错? 随附相关代码和配置。 显然、我对该距离感兴趣:
引脚设置为0
开始测量
引脚设置为1 //调用此 T1
延迟1ms
引脚设置为2 //调用此 T2
我希望 T2-T1 =~ 1ms、表示引脚处于高电平。
long lastPulseLength _us = 0;
void measureEchoPulse (Capture_Handle handle、uint32_t interval、int_fast16_t status)
{
lastPulseLength _us = interval;
}
void 范围(void *arg0)
{
CAPTURE_Handle 句柄;
CAPTURE_PARAMS 参数;
caption_Params_init (¶ms);
params.mode = Capture_Any_edge;
params.callbackFxn = measureEchoPulse;
Params.periodUnit = Capture_Period_US;
句柄= Capture_open (CONFIG_CAPTURE_0、¶ms);
if (handle == NULL){
while (1);
}
GPIO_WRITE (CONFIG_GPIO_TRIGGER、0);
if (Capture_start (handle)=Capture_STATUS_ERROR){
while (1);
}
while (1){
GPIO_WRITE (CONFIG_GPIO_TRIGGER、1);
//设置名为 lastPulseLength _us 的回调
vTaskDelay (PDM_TO_TICKs (1000));
GPIO_WRITE (CONFIG_GPIO_TRIGGER、0);
//调用回调,lastPulseLength _us 设置为~ 160000us。
vTaskDelay (PDM_TO_TICKs (1000));
log_info1 ("time =%dus"、lastPulseLength _us);
}
}
#include #include #define CONFIG_CAPTURE_COUNT 1 /* === CaptureCC32XX 对象==== */ CaptureCC32XX_Object CaptureCC32XX Objects[CONFIG_CAPTURE_COUNT]; /* === CaptureCC32XXHWAttrs ==== */ const CaptureCC32XX_HWAttrs CaptureCC32XXHWAttrs[CONFIG_CAPTURE_COUNT]={ /* CONFIG_CAPTURE_0 */ { .CapturePin = CaptureCC32XX_PIN_03、 .intPriority =(~0) }、 }; /* === CAPTURE_CONFIG === */ const Capture_Config Capture_config[CONFIG_CAPTURE_COUNT]={ /* CONFIG_CAPTURE_0 */ { .fxnTablePtr =&CaptureCC32XX_fxnTable、 .object =捕捉 CC32XX 对象[CONFIG_CAPTURE_0]、 hwAttrs =&captureCC32XXXHWAttrs[CONFIG_CAPTURE_0] }、 }; const uint_least8_t CONFIG_CAPTURE_0_CONST = CONFIG_CAPTURE_0; const uint_least8_t Capture_count = CONFIG_CAPTURE_COUNT;