PIC18F4550的延迟功能

时间:2017-08-10 11:15:49

标签: c embedded mplab pic18

在C编程中是否可以使用PIC18F4550的延迟功能,类似于Arduino中的delay()delayMicroseconds()

可以找到的延迟函数是Delay10KTCYx()Delay10TCYx()等,这很难产生我们想要的延迟,最低延迟甚至不是几毫秒。

请你寻求助攻。谢谢

1 个答案:

答案 0 :(得分:1)

进行微控制器编程时,如果可能,应始终使用片上硬件定时器。通常有几个,也许还有一个实时时钟。您应该在MCU中的硬件定时器周围寻找驱动程序或HAL,而不是寻找一些忙碌延迟功能。

此外,如果您需要超过1毫秒的分辨率,请注意"延迟"功能往往不准确。

Busy-delay()函数/循环主要是一个快速的&脏的业余解决方案。他们很糟糕,因为:

  • 他们消耗100%的CPU,从而消耗100%的电量。
  • 它们与编译器及其设置紧密耦合。不同的优化级别可能会打破这种延迟。
  • 它们与系统时钟紧密耦合,而片上定时器驱动程序通常指定使用哪个时钟作为参数并相应地调整预缩放。
  • 它们通常不太准确。
  • 总的来说,他们不一定有确定性的行为。