📄 main.c
字号:
//============================================================
// 工程名称: SPWM-300
// 功能描述: 300点SPWM
// 组成文件: main.c
// spmc75f2413a.h, unspmacro.h
// 完成日期: 2006-5-18
//============================================================
#include "Spmc75_regs.h"
#include "unspmacro.h"
void MCP4_T_PWM_init(void);
//正弦表,300个点,取值范围在50~750
//如果TPR=1200,中心PWM计数方式,计数周期2400,
//没次TPR中断更新TGRA~TGRC值,生成50Hz SPWM波
//载波频率为15K
extern int iSin_TAB[];
int phases_Add_U = 0; //U相相位累加值
int phases_Add_V = 100; //V相相位累加值
int phases_Add_W = 200; //W相相位累加值
int main(void)
{
MCP4_T_PWM_init();
INT_IRQ();
while(1);
}
//=================================================================================================
// Description: IRQ3 interrupt source is XXX,used to XXX
// Notes: 已没有问题
//=================================================================================================
void IRQ3(void) __attribute__ ((ISR));
void IRQ3(void)
{
if(P_TMR4_Status->B.TPRIF)
{
//对MCP3、MCP4的各寄存器进行设置时,一定要先对P_TPWM_Write寄存器进行设置
//推荐先读取P_TPWM_Write的值,再与0x5A01或0x5A02进行或运算,再写回P_TPWM_Write
P_TPWM_Write->W |= 0x5A02; //MCP4各控制寄存器写使能
if(++phases_Add_U >= 300)phases_Add_U -= 300;
if(++phases_Add_V >= 300)phases_Add_V -= 300;
if(++phases_Add_W >= 300)phases_Add_W -= 300;
P_TMR4_TGRA->W = iSin_TAB[phases_Add_U]; //设定占空比
P_TMR4_TGRB->W = iSin_TAB[phases_Add_V]; //设定占空比
P_TMR4_TGRC->W = iSin_TAB[phases_Add_W]; //设定占空比
//注意:对TGRA--TGRC数据进行改写时,应该设定P_TMR_LDOK的值,以将改写值载入相应寄存器
P_TMR_LDOK->W = 0x00AA;
P_TMR4_Status->B.TPRIF = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -