新手:我想请教关于定时器唤醒系统中一段代码的意思
时间:10-02
整理:3721RD
点击:
这是我想请教的代码:
void Set_ST_Period(uint sec)
{
ulong sleepTimer = 0;
sleepTimer |= ST0;
sleepTimer |= (ulong)ST1 << 8;
sleepTimer |= (ulong)ST2 << 16;
sleepTimer += ((ulong)sec * (ulong)32768);
ST2 = (uchar)(sleepTimer >> 16);
ST1 = (uchar)(sleepTimer >> 8);
ST0 = (uchar) sleepTimer;
}
这段代码的左移和右移是什么含义?
小弟,谢谢各位大神的解答!
void Set_ST_Period(uint sec)
{
ulong sleepTimer = 0;
sleepTimer |= ST0;
sleepTimer |= (ulong)ST1 << 8;
sleepTimer |= (ulong)ST2 << 16;
sleepTimer += ((ulong)sec * (ulong)32768);
ST2 = (uchar)(sleepTimer >> 16);
ST1 = (uchar)(sleepTimer >> 8);
ST0 = (uchar) sleepTimer;
}
这段代码的左移和右移是什么含义?
小弟,谢谢各位大神的解答!
左移右移应当结合寄存器来看。楼主请问ST1 0-7位存储的字段意义和8-15位字段意义各是什么?
不过我猜测这段代码的作用无非也就是先获取定时器当前计数器的值sleepTimer ,然后加上sec 的定时时长,得到最后的一个比较值写入寄存器。实现sec 时间的定时。