📄 pwm.h
字号:
#define CMP10ACT_HIGH_ENA 0x0080 //高有效
#define CMP10ACT_HIGH 0x00C0 //强制高
//PWM9 输出方式选择
#define CMP9ACT_LOW 0x0000 //强制低
#define CMP9ACT_LOW_ENA 0x0010 //低有效
#define CMP9ACT_HIGH_ENA 0x0020 //高有效
#define CMP9ACT_HIGH 0x0030 //强制高
//PWM8 输出方式选择
#define CMP8ACT_LOW 0x0000 //强制低
#define CMP8ACT_LOW_ENA 0x0004 //低有效
#define CMP8ACT_HIGH_ENA 0x0008 //高有效
#define CMP8ACT_HIGH 0x000C //强制高
//PWM7 输出方式选择
#define CMP7ACT_LOW 0x0000 //强制低
#define CMP7ACT_LOW_ENA 0x0001 //低有效
#define CMP7ACT_HIGH_ENA 0x0002 //高有效
#define CMP7ACT_HIGH 0x0003 //强制高
/* DBTCONA EVA死区控制寄存器 */
//死区定时器周期
#define DBTCONA_DBT_0 0x0000
#define DBTCONA_DBT_1 0x0100
#define DBTCONA_DBT_2 0x0200
#define DBTCONA_DBT_3 0x0300
#define DBTCONA_DBT_4 0x0400
#define DBTCONA_DBT_5 0x0500
#define DBTCONA_DBT_6 0x0600
#define DBTCONA_DBT_7 0x0700
#define DBTCONA_DBT_8 0x0800
#define DBTCONA_DBT_9 0x0900
#define DBTCONA_DBT_10 0x0A00
#define DBTCONA_DBT_11 0x0B00
#define DBTCONA_DBT_12 0x0C00
#define DBTCONA_DBT_13 0x0D00
#define DBTCONA_DBT_14 0x0E00
#define DBTCONA_DBT_15 0x0F00
#define DBTCONA_EDBT3 0x0080 //死区定时器3使能
#define DBTCONA_EDBT2 0x0040 //死区定时器2使能
#define DBTCONA_EDBT1 0x0020 //死区定时器1使能
//死区定时器预分频器
#define DBTCONA_DBTPS_0 0x0000 // X/1
#define DBTCONA_DBTPS_1 0x0004 // X/2
#define DBTCONA_DBTPS_2 0x0008 // X/4
#define DBTCONA_DBTPS_3 0x000C // X/8
#define DBTCONA_DBTPS_4 0x0010 // X/16
#define DBTCONA_DBTPS_5 0x0014 // X/32
//#define DBTCONA_DBTPS_6 0x0018 // X/4
//#define DBTCONA_DBTPS_7 0x001C // X/4
/* DBTCONB EVB死区控制寄存器 */
//死区定时器周期
#define DBTCONB_DBT_0 0x0000
#define DBTCONB_DBT_1 0x0100
#define DBTCONB_DBT_2 0x0200
#define DBTCONB_DBT_3 0x0300
#define DBTCONB_DBT_4 0x0400
#define DBTCONB_DBT_5 0x0500
#define DBTCONB_DBT_6 0x0600
#define DBTCONB_DBT_7 0x0700
#define DBTCONB_DBT_8 0x0800
#define DBTCONB_DBT_9 0x0900
#define DBTCONB_DBT_10 0x0A00
#define DBTCONB_DBT_11 0x0B00
#define DBTCONB_DBT_12 0x0C00
#define DBTCONB_DBT_13 0x0D00
#define DBTCONB_DBT_14 0x0E00
#define DBTCONB_DBT_15 0x0F00
#define DBTCONB_EDBT3 0x0080 //死区定时器3使能
#define DBTCONB_EDBT2 0x0040 //死区定时器2使能
#define DBTCONB_EDBT1 0x0020 //死区定时器1使能
//死区定时器预分频器
#define DBTCONB_DBTPS_0 0x0000 // X/1
#define DBTCONB_DBTPS_1 0x0004 // X/2
#define DBTCONB_DBTPS_2 0x0008 // X/4
#define DBTCONB_DBTPS_3 0x000C // X/8
#define DBTCONB_DBTPS_4 0x0010 // X/16
#define DBTCONB_DBTPS_5 0x0014 // X/32
//#define DBTCONB_DBTPS_6 0x0018 // X/4
//#define DBTCONB_DBTPS_7 0x001C // X/4
//定义PWM通道值
#define PWM6_NUM 6
#define PWM5_NUM 5
#define PWM4_NUM 4
#define PWM3_NUM 3
#define PWM2_NUM 2
#define PWM1_NUM 1
#define PWM12_NUM 12
#define PWM11_NUM 11
#define PWM10_NUM 10
#define PWM9_NUM 9
#define PWM8_NUM 8
#define PWM7_NUM 7
#define T4PWM_NUM 4
#define T3PWM_NUM 3
#define T2PWM_NUM 2
#define T1PWM_NUM 1
#define GPT4 4
#define GPT3 3
#define GPT2 2
#define GPT1 1
#define GPT1_NUM 1
#define GPT2_NUM 2
#define GPT3_NUM 3
#define GPT4_NUM 4
#define CMP1_NUM 1
#define CMP2_NUM 2
#define CMP3_NUM 3
#define CMP4_NUM 4
#define CMP5_NUM 5
#define CMP6_NUM 6
#define PDINTA_NUM 1
#define PDINTB_NUM 2
#define EVA_NUM 1
#define EVB_NUM 2
#define SYS_FRQUENCE 30000000
//#define GP1_FRQUENCE (SYS_FRQUENCE/128) //234575
//#define GP2_FRQUENCE (SYS_FRQUENCE/128) //234575
//#define GP3_FRQUENCE (SYS_FRQUENCE/128) //234575
//#define GP4_FRQUENCE (SYS_FRQUENCE/128) //234575
#define LEFT 1
#define RIGHT 2
#define FORWARD 1
#define BACK 2
void init_ev(void);
void GP_Init();
/*通用定时器x的周期寄存器设定*/
void GPTxPR_Set(unsigned int GPTx_NUM,unsigned int TxPR);
/*通用定时器x的比较寄存器设定*/
void GPTxCMPR_Set(unsigned int GPTx_NUM,unsigned int TxCMPR);
/*通用定时器x的计数器设定*/
void GPTxCNT_Set(unsigned int GPTx_NUM,unsigned int TxCNT);
/*通用定时器x的周期频率设定*/
void GPTx_Frequence_Set(unsigned int GPTx_NUM,unsigned int GPTx_Frequence);
/*
TxCON参数设定函数,可以设定输入时钟的预定标系数,及记数模式,默认的为连续增记数,128分频
时钟源选择,定时器比较寄存器的重载条件,等参数
*/
void GPTxCON_PARA_SET(unsigned int GPTx_NUM,unsigned int PARA);
void GPTx_ENA(unsigned int GPTx_NUM); //定时器x使能
/*禁止定时器x的操作*/
void GPTx_DISABLE(unsigned int GPTx_NUM);
/*使能定时器X的比较操作*/
void GPTxCMPR_ENA(unsigned int GPTx_NUM);
/*禁止定时器x的比较操作*/
void GPTxCMPR_DISABLE(unsigned int GPTx_NUM);
//通用定时器x上溢中断使能
void GPTxOFINT_ENA(unsigned int GPTx_NUM);
//通用定时器x下溢中断使能
void GPTxUFINT_ENA(unsigned int GPTx_NUM);
//通用定时器x比较中断使能
void GPTxCINT_ENA(unsigned int GPTx_NUM);
//通用定时器x周期中断使能
void GPTxPINT_ENA(unsigned int GPTx_NUM) ;
//通用定时器x上溢中断禁止
void GPTxOFINT_DISABLE(unsigned int GPTx_NUM);
//通用定时器x下溢中断禁止
void GPTxUFINT_DISABLE(unsigned int GPTx_NUM);
//通用定时器x比较中断使能
void GPTxCINT_DISABLE(unsigned int GPTx_NUM) ;
//通用定时器x周期中断禁止
void GPTxPINT_DISABLE(unsigned int GPTx_NUM);
/*设定定时器x的比较输出方波的频率*/
void TxPWM_Frequence_Set(unsigned int TxPWM_NUM,unsigned int TxPWM_Frequence);
/*设定定时器x的比较输出方波的占空比*/
#define MAX_FULL_BLANK_NUM 1000
void GPTx_Full_Blank_Set(unsigned int GPTx_NUM,unsigned int FULL_BLANK_NUM);
void TxPWM_Full_Blank_Set(unsigned int TxPWM_NUM,unsigned int FULL_BLANK_NUM);
/*
通用定时器比较输出极性设定
可以通过此函数令输出为恒高、恒低电平*/
void TxPWM_Output_Set(unsigned int TxPWM_NUM,unsigned int TxPWM_Polar );
/*此函数使得EVA的比较输出为高阻态*/
void EVA_TxPWM_Output_DISABLE();
void EVA_TxPWM_Output_ENABLE();
/*
此函数使得EVB的比较输出为高阻态
*/
void EVB_TxPWM_Output_DISABLE();
void EVB_TxPWM_Output_ENABLE();
void PWM_Init();
/*EV中全比较单元的比较输出极性设定
可以通过此函数令输出为恒高、恒低、高有效、低有效电平*/
void PWMx_Output_Set(unsigned int PWMx_NUM,unsigned int PWM_Polar );
/*EV中全比较单元的比较寄存器数值设定*/
void PWMx_CMPR_Set(unsigned int PWMx_NUM,unsigned int PWMx_CMPR_NUM);
/*EV中全比较单元的比较输出波形占空比设定
MAX_FULL_BLANK_NUM =1000
可以通过 MAX_FULL_BLANK_NUM 的改变来细化波形的精确度*/
void PWMx_Full_Blank_Set(unsigned int PWMx_NUM,unsigned int FULL_BLANK_NUM);
//比较单元x比较中断使能
void CMPxINT_ENA(unsigned int CMPx_NUM);
//比较单元x比较中断禁止
void CMPxINT_DISABLE(unsigned int CMPx_NUM);
//功率保护中断x中断使能
void PDINTxINT_ENA(unsigned int PDINTx_NUM);
//功率保护中断x中断禁止
void PDINTxINT_DISABLE(unsigned int PDINTx_NUM);
//使能全比较器X的比较操作
void CMPRx_ENA(unsigned int CMPx_NUM) ;
//禁止全比较器X的比较操作
void CMPRx_DISABLE(unsigned int CMPx_NUM);
/*
事件管理模块参数设定函数,可以设定比较寄存器的重载条件
方式控制寄存器重载条件
*/
void COMCONx_PARA_SET(unsigned int EVx_NUM,unsigned int PARA);
void GPTCONx_PARA_SET(unsigned int EVx_NUM,unsigned int PARA);
/*全比较单元中某一比较单元的载波频率的设定与改变
//限制使用,因为改变一个比较单元的载波频率的同时,也会改变
同一EV中其他的比较单元的频率*/
void PWMx_Frequence_Set(unsigned int PWMx_NUM,unsigned int PWMx_Frequence);
/*强制使得全比较单元中某一比较单元的比较输出为低电平*/
void PWMx_Output_DISABLE(unsigned int PWMx_NUM);
/*
强制使得EVA中的所有全比较单元的比较输出为高阻态*/
void EVA_PWM_Output_DISABLE();
/*强制使得EVB中的所有全比较单元的比较输出为高阻态*/
void EVB_PWM_Output_DISABLE();
void EV_TEST();
void Drive_Init(void);
void Drive(unsigned int left_right,unsigned int direct,unsigned int speed);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -