你好。
我们需要在 GPIO 输出端定期生成一个持续时间为20至500微秒±15%的脉冲。
我们基于 simple_peripheral SDK 5.20创建应用程序。
我们直接在计时器中断函数中将输出更改为端口(计时器优先级设置为最高(1<<5))。 脉冲持续时间由 CPU delay()形成。
脉冲形成的时刻包含在 HAL_enter_critical_section 和 SysTickDisable()中,但尽管如此,脉冲有时会得到20%以上的增补,这种感觉会干扰脉冲形成过程。
我们的代码:
静态空脉冲(GPTimerCC26XX_Handle handle、GPTimerCC26XX_IntMask interruptMask)
{
SysTickDisable();
HAL_ENTER_CRITICAL_SECTION (KEY);
HWREGB (GPIO_base + TEST_PIN)= 1;
CPUdelay (3000);
HWREGB (GPIO_base + TEST_PIN)= 0;
HAL_EXIT_CRICAL_SECTION (KEY);
SysTickEnable();
}
对于我们来说、脉冲持续时间非常关键、在我们的情况下、如何在不中断应用的情况下占用100% CPU 时间?
µs 每10ms 禁用500 μ s 的中断有哪些问题?
请提出任何想法、建议或指明解决此问题的可能方向!
此致 John