📄 init.c
字号:
#include "Spmc75_regs.h"
#include "unspmacro.h"
#include "SPMC75_SPWM_ISR.h"
//设置MCP4定时器,实现三相六路PWM输出(Fsys=24MHz)
void MCP4_T_PWM_init()
{
P_IOC_Dir->W |= 0xFC00; // 将IOC[10]-IOC[15]设置为输出,不影响其它端口的设置
P_IOC_Attrib->W |= 0xFC00; //将IOC[10]-IOC[15]设置为非反向 ,不影响其它端口的设置
P_IOC_SPE->W |= 0xFC00; //只对IOC[10]-IOC[15]进行设置,不影响其它端口的设
P_TPWM_Write->W |= 0x5A02; //MCP4各控制寄存器写使能
//TPR中断频率选择每个周期中断一次 PRDINT = "00"B
//操作模式选择为中心PWM模式 MODE = "1010"B
//定时清除源选择为TPR CCLS = "111"B
//上升沿计数 CKEGS = "00"B
//定时器分频选择为Fck/1 TMRPS = "000"B
P_TMR4_Ctrl->W = 0x28E0;
//PWM比较匹配输出模式设定
//初始输出为1,比较匹配输出为0
P_TMR4_IOCtrl->W = 0x0222;
P_TMR4_INT->W |= 0x0010; //定时器周期寄存器TPR比较中断使能
//三相均插入死区时间
//U相死区时间使能 DTUE = "1"B
//V相死区时间使能 DTVE = "1"B
//W相死区时间使能 DTWE = "1"B
P_TMR4_DeadTime->W |= 0x7007;
//TIO4A输出使能 TMR4AOE = "1"B
//TIO4B输出使能 TMR4BOE = "1"B
//TIO4C输出使能 TMR4COE = "1"B
//TIO4D输出使能 TMR4DOE = "1"B
//TIO4E输出使能 TMR4EOE = "1"B
//TIO4F输出使能 TMR4FOE = "1"B
P_TMR_Output->W = 0x3F00; //使能TIO4A引脚输出
//占空模式选择:三相独立 DUTYMODE = "1"B
//U相PWM波形输出使能 UPWM = "1"B
//V相PWM波形输出使能 VPWM = "1"B
//W相PWM波形输出使能 WPWM = "1"B
P_TMR4_OutputCtrl->W = 0xC73F;
P_TMR4_TPR->W = 800; //设定计数值
P_TMR4_TGRA->W = 0; //设定占空比
P_TMR4_TGRB->W = 0; //设定占空比
P_TMR4_TGRC->W = 0; //设定占空比
P_TMR_LDOK->W = 0x00AA;
P_TMR_Start->B.TMR4ST = 1; //启动MCP4定时器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -