📄 osdlyt.h
字号:
/*******************************************************************************************************/
/* 文件信息 : 这关系到软件的修改 维护等必须得相关信息 */
/* 文 件 名 : osdlyt.h */
/* 创 建 人 : 蔡 杰 (CaiJie) hnzjjcj@hotmail.com */
/* 创建日期 : 2004-04-12 */
/* 原始版本 : V 1.0.3 */
/* 说 明 : */
/* 修改版本 : */
/* 修改日期 : */
/* 说 明 : */
/* 描 述 : osdlyt.h 源代码 用在OS 级定时用 */
/* (c) Copyright 2004-2004, CaiJie */
/* All Rights Reserved */
/*******************************************************************************************************/
#ifndef _OSTIMER_H_
#define _OSTIMER_H_
/* MCU的定时时间 相关的定义 和计算公式 */
/* 计算公式 如下 */
/* */
/* 1/OS_TICKS_PER_SEC = (2^MCU_T0 - OSINTCLK) * 1/MCU_Fosc * Fclk */
/* */
/* 所以OSINTCLK 的计算公式如下 */
/* OSINTCLK = 2^MCU_T0 - (Fosc / (OS_TICKS_PER_SEC * Fclk)) */
/* 加上相应误差 公式修正为 */
/* OSINTCLK = 2^MCU_T0 - (Fosc / (OS_TICKS_PER_SEC * Fclk)) + Ferr */
/* 最终的计算公式为 */
/* OSINTCLK = 2^MCU_TO - (Fosc / (OS_TICKS_PER_SEC * Fclk)) +Ferr */
#define OS_TICKS_PER_SEC 100L // 声明1秒系统系统节拍数 也就是在MCU中的定时器的转换定时频率
#define TICK_TIMER_SHARING 1L // 定义进入多少次硬件中断为一次系统定时器软中断
#define MCU_Fosc 16000000L // MCU的晶振的频率 单位HZ
#define EXT_MCU_Fosc 16000000L // MCU的晶振的频率 单位HZ
#define MCU_Fclk 1L // MCU的时钟周期 RD+ 6clk / 89c51/ 12clk 等看芯片资料
#define MCU_TSEC 2 // 选择OS定时的计算方法 默认是 2
#define MCU_Terr 0 // MCU的中断相应误差值 默认是 12M 39 24M 38
#define MCU_T0 16 // T0 的工作方式方式定时 这里不用改更,改这里 TMOD要一起更改
#define MCU_Tmax 0
/* 标准计算公式 但占太多的资源 只参考 */
#if MCU_TSEC == 1
#define OSINTCLK (INT16U)((pow(2,MCU_T0)) - (MCU_Fosc / (OS_TICKS_PER_SEC\
* TICK_TIMER_SHARING * MCU_Fclk)) + MCU_Terr)
#endif
/* 简化后的计算公式 有些要自己手动计算 (pow(2,MCU_T0) 的值 */
#if MCU_TSEC == 2
#if ((MCU_Fosc / (OS_TICKS_PER_SEC * TICK_TIMER_SHARING * MCU_Fclk) + MCU_Terr) >= 0xFFFF)
#error "系统节拍太慢了"
#endif
#define OSINTCLK (INT16U)(0xffff - (MCU_Fosc / (OS_TICKS_PER_SEC * TICK_TIMER_SHARING * MCU_Fclk) + MCU_Terr))
#endif
/* 采用辅助软件计算的定义 */
#if MCU_TSEC == 3
#define OSINTCLK (INT16U)(0xec78 + MCU_Terr) // 定时时间加上误差
#endif
/* 时间定义的常数 在应用中使用 便于理解 */
/* 计算公式 如下 */
/* T = 1/F = 1 / OS_TICKS_PER_SEC */
/* */
#define T OS_TICKS_PER_SEC/1000
#define OSDLY5MS (5 * T)
#define OSDLY10MS (10 * T)
#define OSDLY15MS (15 * T)
#define OSDLY20MS (20 * T)
#define OSDLY30MS (30 * T)
#define OSDLY40MS (40 * T)
#define OSDLY50MS (50 * T)
#define OSDLY60MS (60 * T)
#define OSDLY70MS (70 * T)
#define OSDLY80MS (80 * T)
#define OSDLY90MS (90 * T)
#define OSDLY100MS (100 * T)
#define OSDLY110MS (110 * T)
#define OSDLY120MS (120 * T)
#define OSDLY130MS (130 * T)
#define OSDLY140MS (140 * T)
#define OSDLY150MS (150 * T)
#define OSDLY160MS (160 * T)
#define OSDLY170MS (170 * T)
#define OSDLY180MS (180 * T)
#define OSDLY190MS (190 * T)
#define OSDLY200MS (200 * T)
#define OSDLY210MS (210 * T)
#define OSDLY220MS (220 * T)
#define OSDLY230MS (230 * T)
#define OSDLY240MS (240 * T)
#define OSDLY250MS (250 * T)
#define OSDLY300MS (300 * T)
#define OSDLY400MS (400 * T)
#define OSDLY500MS (500 * T)
#define OSDLY600MS (600 * T)
#define OSDLY700MS (700 * T)
#define OSDLY750MS (750 * T)
#define OSDLY800MS (800 * T)
#define OSDLY820MS (820 * T)
#define OSDLY840MS (840 * T)
#define OSDLY900MS (900 * T)
#define OSDLY960MS (960 * T)
#define OSDLY1000MS (1000 * T)
#define OSDLY1100MS (1100 * T)
#define OSDLY1200MS (1200 * T)
/*******************************************************************************************************/
/* */
/* End Of File */
/* */
/*******************************************************************************************************/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -