📄 pwm.h
字号:
#include "io.h"
/*
EVAIMRA
*/
#define T1OFINT_ENA 0x0400
#define T1UFINT_ENA 0x0200
#define T1CINT_ENA 0x0100
#define T1PINT_ENA 0x0080
#define CMP3INT_ENA 0x0008
#define CMP2INT_ENA 0x0004
#define CMP1INT_ENA 0x0002
#define PDINTA_ENA 0x0001
/*
EVAIMRB
*/
#define T2OFINT_ENA 0x0008
#define T2UFINT_ENA 0x0004
#define T2CINT_ENA 0x0002
#define T2PINT_ENA 0x0001
/*
EVAIMRC
*/
#define CAP3INT_ENA 0x0004
#define CAP2INT_ENA 0x0002
#define CAP1INT_ENA 0x0001
/*
EVAIFRA
*/
#define T1OFINT_FLAG 0x0400
#define T1UFINT_FLAG 0x0200
#define T1CINT_FLAG 0x0100
#define T1PINT_FLAG 0x0080
#define CMP3INT_FLAG 0x0008
#define CMP2INT_FLAG 0x0004
#define CMP1INT_FLAG 0x0002
#define PDINTA_FLAG 0x0001
/*
EVAIFRB
*/
#define T2OFINT_FLAG 0x0008
#define T2UFINT_FLAG 0x0004
#define T2CINT_FLAG 0x0002
#define T2PINT_FLAG 0x0001
/*
EVAIFRC
*/
#define CAP3INT_FLAG 0x0004
#define CAP2INT_FLAG 0x0002
#define CAP1INT_FLAG 0x0001
/*
EVBIMRA
*/
#define T3OFINT_ENA 0x0400
#define T3UFINT_ENA 0x0200
#define T3CINT_ENA 0x0100
#define T3PINT_ENA 0x0080
#define CMP6INT_ENA 0x0008
#define CMP5INT_ENA 0x0004
#define CMP4INT_ENA 0x0002
#define PDINTB_ENA 0x0001
/*
EVBIMRB
*/
#define T4OFINT_ENA 0x0008
#define T4UFINT_ENA 0x0004
#define T4CINT_ENA 0x0002
#define T4PINT_ENA 0x0001
/*
EVBIMRC
*/
#define CAP6INT_ENA 0x0004
#define CAP5INT_ENA 0x0002
#define CAP4INT_ENA 0x0001
/*
EVBIFRA
*/
#define T3OFINT_FLAG 0x0400
#define T3UFINT_FLAG 0x0200
#define T3CINT_FLAG 0x0100
#define T3PINT_FLAG 0x0080
#define CMP6INT_FLAG 0x0008
#define CMP5INT_FLAG 0x0004
#define CMP4INT_FLAG 0x0002
#define PDINTB_FLAG 0x0001
/*
EVBIFRB
*/
#define T4OFINT_FLAG 0x0008
#define T4UFINT_FLAG 0x0004
#define T4CINT_FLAG 0x0002
#define T4PINT_FLAG 0x0001
/*
EVBIFRC
*/
#define CAP6INT_FLAG 0x0004
#define CAP5INT_FLAG 0x0002
#define CAP4INT_FLAG 0x0001
/* TxCON */
//记数模式选择
#define TMODE_0 0x0000 //停止/保持
#define TMODE_1 0x0800 //连续增/减记数模式
#define TMODE_2 0x1000 //连续增记数模式
#define TMODE_3 0x1800 //定向增/减记数模式
//输入时钟预定标
#define TPS_128 0x0700 //输入时钟预定标
#define TPS_64 0x0600
#define TPS_32 0x0500
#define TPS_16 0x0400
#define TPS_8 0x0300
#define TPS_4 0x0200
#define TPS_2 0x0100
#define TPS_1 0x0000
#define TENABLE 0x0040 //使能定时器
#define Tx_DISABLE 0xFFBF
//定时器时钟源选择
#define TLKS_0 0x0000 //CPU时钟
#define TLKS_1 0x0010 //外部时钟
#define TLKS_2 0x0020 //保留
#define TLKS_3 0x0030 //正交脉冲编码电路
//定时器比较寄存器重载条件
#define TCLD_0 0x0000 //计数器为0时重载
#define TCLD_1 0x0004 //计数器是0或等于周期寄存器时重载
#define TCLD_2 0x0008 //立即重装载
#define TCLD_3 0x000C //保留
#define TECMPR 0x0002 //定时器比较使能位
#define TxCMPR_DISABLE 0xFFFD
/* T1CON */
#define T1CON_FREE 0x8000
#define T1CON_SOFT 0x4000
//#define T1CON_SWT1 0x0080 //不使用定时器自身周期寄存器
//#define T1CON_SELT1PR 0x0001 //周期寄存器选择
/* T2CON */
#define T2CON_FREE 0x8000
#define T2CON_SOFT 0x4000
#define T2CON_SWT1 0x0080 //不使用定时器自身周期寄存器
#define T2CON_SELT1PR 0x0001 //周期寄存器选择
/* T3CON */
#define T3CON_FREE 0x8000
#define T3CON_SOFT 0x4000
//#define T3CON_SWT1 0x0080 //不使用定时器自身周期寄存器
//#define T3CON_SELT1PR 0x0001 //周期寄存器选择
/* T4CON */
#define T4CON_FREE 0x8000
#define T4CON_SOFT 0x4000
#define T4CON_SWT1 0x0080 //不使用定时器自身周期寄存器
#define T4CON_SELT3PR 0x0001 //周期寄存器选择
/* GPTCONA */
#define T2TOADC_0 0x0000
#define T2TOADC_1 0x0200
#define T2TOADC_2 0x0400
#define T2TOADC_3 0x0600
#define T1TOADC_0 0x0000
#define T1TOADC_1 0x0080
#define T1TOADC_2 0x0100
#define T1TOADC_3 0x0180
#define TCOMPOE 0x0040 //比较输出允许,若PDINTA有效,该位为0
//通用定时器2比较输出极性
#define T2PIN_LOW 0x0000 //强制低
#define T2PIN_LOW_ENA 0x0004 //低有效
#define T2PIN_HIGH_ENA 0x0008 //高有效
#define T2PIN_HIGH 0x000C //强制高
//通用定时器1比较输出极性
#define T1PIN_LOW 0x0000 //强制低
#define T1PIN_LOW_ENA 0x0001 //低有效
#define T1PIN_HIGH_ENA 0x0002 //高有效
#define T1PIN_HIGH 0x0003 //强制高
/* GPTCONB */
#define T4TOADC_0 0x0000
#define T4TOADC_1 0x0200
#define T4TOADC_2 0x0400
#define T4TOADC_3 0x0600
#define T3TOADC_0 0x0000
#define T3TOADC_1 0x0080
#define T3TOADC_2 0x0100
#define T3TOADC_3 0x0180
//#define TCOMPOE 0x0040 //比较输出允许,若PDINTB有效,该位为0
//通用定时器4比较输出极性
#define T4PIN_LOW 0x0000 //强制低
#define T4PIN_LOW_ENA 0x0004 //低有效
#define T4PIN_HIGH_ENA 0x0008 //高有效
#define T4PIN_HIGH 0x000C //强制高
//通用定时器3比较输出极性
#define T3PIN_LOW 0x0000 //强制低
#define T3PIN_LOW_ENA 0x0001 //低有效
#define T3PIN_HIGH_ENA 0x0002 //高有效
#define T3PIN_HIGH 0x0003 //强制高
#define PWM_LOW 0x0000
#define PWM_LOW_ENA 0x0001
#define PWM_HIGH_ENA 0x0002
#define PWM_HIGH 0x0003
/* COMCONx */
#define CENABLE 0x8000 //允许比较操作
//寄存器重载条件
#define CLD_0 0x0000 //T1CNT =0 or T3CNT =0
#define CLD_1 0x2000 //T1/3CNT =0 或T1/3CNT =T1/3PR
#define CLD_2 0x4000 //RIGHT NOW
//方式控制寄存器重载条件
#define ACTRLD_0 0x0000 //T1/3CNT =0
#define ACTRLD_1 0x0400 //T1/3CNT =0 或T1/3CNT =T1PR
#define ACTRLD_2 0x0800 //RIGHT NOW
#define FCOMPOE 0x0200 //PWM OUTPUT ENABLE
/* ACTRA */
//PWM6 输出方式选择
#define CMP6ACT_LOW 0x0000 //强制低
#define CMP6ACT_LOW_ENA 0x0400 //低有效
#define CMP6ACT_HIGH_ENA 0x0800 //高有效
#define CMP6ACT_HIGH 0x0C00 //强制高
//PWM5 输出方式选择
#define CMP5ACT_LOW 0x0000 //强制低
#define CMP5ACT_LOW_ENA 0x0100 //低有效
#define CMP5ACT_HIGH_ENA 0x0200 //高有效
#define CMP5ACT_HIGH 0x0300 //强制高
//PWM4 输出方式选择
#define CMP4ACT_LOW 0x0000 //强制低
#define CMP4ACT_LOW_ENA 0x0040 //低有效
#define CMP4ACT_HIGH_ENA 0x0080 //高有效
#define CMP4ACT_HIGH 0x00C0 //强制高
//PWM3 输出方式选择
#define CMP3ACT_LOW 0x0000 //强制低
#define CMP3ACT_LOW_ENA 0x0010 //低有效
#define CMP3ACT_HIGH_ENA 0x0020 //高有效
#define CMP3ACT_HIGH 0x0030 //强制高
//PWM2 输出方式选择
#define CMP2ACT_LOW 0x0000 //强制低
#define CMP2ACT_LOW_ENA 0x0004 //低有效
#define CMP2ACT_HIGH_ENA 0x0008 //高有效
#define CMP2ACT_HIGH 0x000C //强制高
//PWM1 输出方式选择
#define CMP1ACT_LOW 0x0000 //强制低
#define CMP1ACT_LOW_ENA 0x0001 //低有效
#define CMP1ACT_HIGH_ENA 0x0002 //高有效
#define CMP1ACT_HIGH 0x0003 //强制高
/* ACTRB */
//PWM12 输出方式选择
#define CMP12ACT_LOW 0x0000 //强制低
#define CMP12ACT_LOW_ENA 0x0400 //低有效
#define CMP12ACT_HIGH_ENA 0x0800 //高有效
#define CMP12ACT_HIGH 0x0C00 //强制高
//PWM11 输出方式选择
#define CMP11ACT_LOW 0x0000 //强制低
#define CMP11ACT_LOW_ENA 0x0100 //低有效
#define CMP11ACT_HIGH_ENA 0x0200 //高有效
#define CMP11ACT_HIGH 0x0300 //强制高
//PWM10 输出方式选择
#define CMP10ACT_LOW 0x0000 //强制低
#define CMP10ACT_LOW_ENA 0x0040 //低有效
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -