概述
对于一些单片机而言,系统的资源大多数情况下是有限的。为了充分的利用资源(节省成本),工程设计的时候往往会对资源进行不断的压榨。
对于单片机而言它要做的事情大抵只有如下的几件:
- 驱动外设
- 获取外设的信息
- 对获取到的信息进行处理
时钟驱动方法
为了更好的驱动整个单片机程序,我们有时候会采用类似 RTOS 的方法,采用硬件定时器来设置一个系统时钟 sysTick 来使得程序能够能快的运行(如果板子可以跑简单的操作系统那就直接用 RTOS 即可)。一般情况下我们会将当前时钟的优先级设置成比较高。 在单片机里面常常会用到延时,为了充分的利用资源在设计的时候很少会用等待延时(除了驱动某些外设,对协议的时序要求特别高的情况)。
PRIVATE volatile uint32_t s_sysRefClockTick;
// 模仿CMSIS标准的SysTick的ISR,用于驱动操作系统,持续运行
void SysTick_Handler(void) interrupt 5
{
uint8_t temp;
temp = EA;
EA = 0;
s_sysRefClockTick++;
//clr_T2CON_TF2;
T2CON &= CLR_BIT7;
EA = temp;
}
在设计系统时钟的时候一般会对外提供一下的两个接口 SetSysTickCount 和 GetSysTickCount 。SetSysTickCount 故名思意,就是设置系统的时间,在系统进行省电休眠的时候,我们需要用到这个接口,使得系统的整体时间是正确的。在系统休眠之前获取系统的时钟,在系统休眠