资源描述:
《三种SPWM算法源码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、三种SPWM算法源码.txt再过几十年,我们来相会,送到火葬场,全部烧成灰,你一堆,我一堆,谁也不认识谁,全部送到农村做化肥。头文件spwm.h/***************普通SPWM程序************************/#ifndef_NORMAL_SPWM_H#define_NORMAL_SPWM_H//SPWM表结构体三项公用一个表typedefstruct_SPWM_table{Uint16TableSize;//表大小即表中所有数据Uint16SpwmSize;//SPWM表大小vol
2、atileUint16*p_SPWM_A;//A相指针volatileUint16*p_SPWM_B;//B相指针volatileUint16*p_SPWM_C;//C相指针Uint16*p_HeadTable;//表头指针指向SPWM表}SPWM_TABLE;externSPWM_TABLEg_SPWM_Table;//全局SPWM表voidInitSpwm(void);voidStartSpwm(void);interruptvoidISR_T1UFINT_NORMAL_FUNC(void);voidCalcS
3、pwmWithSym(float32a/*调制比*/,float32w_Hz/*调制频率*/,float32z_Hz/*载波频率*/);voidCalcSpwmWithImSym(float32a/*调制比*/,Uint16w_Hz/*调制频率*/,Uint32z_Hz/*载波频率*/);voidCalcSpwmWithArea(float32a/*调制比*/,Uint16w_Hz/*调制频率*/,Uint32z_Hz/*载波频率*/);#endif源文件#include"DSP281x.h"#include"SP
4、WM.h"#include"float.h"#include"math.h"#defineMAX_BUF400#definePI3.1415926Uint16g_spwm_data[MAX_BUF];//表的数据存储SPWM_TABLEg_SPWM_Table;//全局SPWM表//SPWM初始化程序voidInitSpwm(void){g_SPWM_Table.p_HeadTable=g_spwm_data;//指向数据表g_SPWM_Table.TableSize=MAX_BUF;//存储表的大小EALLOW;
5、PieVectTable.T1UFINT=&ISR_T1UFINT_NORMAL_FUNC;EDIS;IER
6、=M_INT2;//开中断2PieCtrlRegs.PIEIER2.bit.INTx6=1;//开下益中断EvaRegs.EVAIFRA.bit.T1UFINT=1;//清楚中断标志PieCtrlRegs.PIEACK.bit.ACK2=1;//响应同组中断}voidStartSpwm(void){EvaRegs.EVAIMRA.bit.T1UFINT=1;//打开下益中断}//对称规则采样法voidCal
7、cSpwmWithSym(float32a/*调制比*/,float32w_Hz/*调制频率*/,float32z_Hz/*载波频率*/){Uint16tmp_PR;//T1周期值volatileUint16i,n,*p;float32m;m=z_Hz/w_Hz;//求出载波比g_SPWM_Table.SpwmSize=(Uint16)m;tmp_PR=g_T1_Clk/(2*z_Hz);//计算出其周期值p=g_SPWM_Table.p_HeadTable;//得到数据表头指针for(i=0;i<(Uint16)
8、m;i++){n=tmp_PR*(0.5-0.5*a*sin((i+0.75)*2*PI/m));*p=n;p++;}}//不对称规则采样法voidCalcSpwmWithImSym(float32a/*调制比*/,Uint16w_Hz/*调制频率*/,Uint32z_Hz/*载波频率*/){Uint16tmp_PR;//T1周期值volatileUint16i,n,*p;float32m;m=z_Hz/w_Hz;//求出载波比g_SPWM_Table.SpwmSize=(Uint16)m;tmp_PR=g_T1_
9、Clk/(2*z_Hz);//计算出其周期值p=g_SPWM_Table.p_HeadTable;//得到数据表头指针for(i=0;i<(Uint16)m;i++){n=tmp_PR*(0.5-0.25*a*(sin((i+0.25)*2*PI/m)+sin((i+0.75)*2*PI/m)));*p=n;p++;}}//面积法voidCalcSpwmWi