【发布时间】:2012-11-12 01:44:36
【问题描述】:
我有一个用 C 语言编写的微控制器代码。
根据我的例子,我使用函数“void osSleep(tU32 ticks)”来停止程序一段时间。不幸的是,我不知道它是如何工作的以及它对我的微控制器有什么作用(哪些引脚、状态等设置为哪些值)。
我已经找到了 setBuzzer() 函数,因为我有它的来源:
void setBuzzer(tBool on)
{
if (TRUE == on)
IOCLR = BUZZER_PIN;
else
IOSET = BUZZER_PIN;
}
所以 GPIO 端口设置为 1 或 0 用于与蜂鸣器相关的 PIN(BUZZER_PIN = 0x00002000)。蜂鸣器有一个引脚,所以我可以启用和禁用它(高电压和低电压)。
我想对osSleep()做类似的分析,但奇怪的是,我在整个代码中找不到它的实现,只有声明:
void osSleep(tU32 ticks);
也许该函数在某个库中。无论如何,我想知道它在较低级别上是如何工作的(例如,当我调用它时,定时器会发生什么,执行什么指令 - 就像在蜂鸣器示例中一样)。
此外,Embedded Artists 的文档中只有一个名为 “Pre-emptive Operating System v 1.4.0” 的代码的高级简短定义。
【问题讨论】:
标签: c timer microcontroller gpio