📄 fan.h
字号:
//常量定义
//DCO频率为.048576 MHz
#define PERIOD050USEC 52
//每5秒种测量一次温度
#define TEMP_TIME 2
//PWM的占空比L0(风扇停止)
#define L0DUTYCYCLE 0
//PWM的占空比L1
#define L1DUTYCYCLE 30
//PWM的占空比L2
#define L2DUTYCYCLE 45
//PWM的占空比L3
#define L3DUTYCYCLE 60
//PWM的占空比L4
#define L4DUTYCYCLE 80
//PWM的占空比L5(风扇全速)
#define L5DUTYCYCLE 100
//温度校正因子(摄式温度)
#define CALFACTORDEGC 0
//温度校正因子(华式温度)
#define CALFACTORDEGF -3
//第0个温度临界(摄式温度)
#define L0 - NEGRANGE
//第1个温度临界(华式温度)
#define L1toL2 70
//第2个温度临界(华式温度)
#define L2toL3 (L1toL2+ LEVELDEGWIDTH)
//第3个温度临界(华式温度)
#define L3toL4 (L2toL3+ LEVELDEGWIDTH)
//第4个温度临界(华式温度)
#define L4toL5 (L3toL4+ LEVELDEGWIDTH)
//第5个温度临界(华式温度)
#define L5 (L3toL4+ LEVELDEGWIDTH)
//每一个等级改变的温度
#define LEVELDEGWIDTH 7
//最大的温度结果
#define MAXVDC 4095
//可能出现的正的最大的温度临界(摄式温度)
#define POSRANGE 99
//可能出现的负的最小的温度临界(摄式温度)
#define NEGRANGE 50
//温度超界
#define OUTOFRANGE 0x0000FFFF
//最大的边界
#define HIGHTEMPDEGC L4
//最小的边界
#define LOWTEMPDEGC L0
//斜率A/D的参考电阻值
#define SLOPEADrREF 10000
//DCO = 1.048576 MHz下的5秒对应的记数值
#define PERIOD5MSEC 5243
typedef enum Boolean {
TRUE, FALSE
} Boolean;
typedef enum Status {
ALARM, OK
} Status;
typedef enum FanLevel {
FANSLEVEL0, FANSLEVEL1, FANSLEVEL2, FANSLEVEL3, FANSLEVEL4, FANSLEVEL5
} FanLevel;
// 端口1的管脚定义
#define ACTIVITY BIT0
#define THERM BIT4
#define REF BIT5
#define CA_IN BIT6
// 端口2的管脚定义
#define TACH BIT0
#define PWM BIT1
#define MAXLEVELSETTINGS 6
//风扇一转所产生的脉冲数
#define PULSESPERREVOLUTION 2
//函数定义
//斜率A/D初始化
void TEMP_init(void);
//将电阻值转换成温度
signed int cnvtTempDegC(long int rSENSE);
//温度采集
void sampleTemp(void);
//PWM初始化
void PWM_init(void);
//速度控制
void changeLevelAndSpeed(FanLevel systemLevel);
//速度设置
void setFanSpeed(void);
//系统初始化
void SYS_init(void);
//LED设置
void setStatusLED( Status status);
//风扇脉冲处理
void updateTach(void);
//风扇脉冲处理
void refreshTach(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -