⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SPMC75 CPU 
💻 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 + -