This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
#include "F28x_Project.h"//设备头文件和示例 include 文件
#include "math.h"
#include "IQmathLib.h"
extern void InitSysCtrl(void);
extern void InitPieVectTable (void);
extern void InitPieCtrl (void);
中断空 ePWM1A_COMPARE_ISR (空);
#pragma DATA_SECTION (sine_table、"IQmathTables");
_iq30 sine_table[512];
void main (void)
{
InitSysCtrl();
InitPieCtrl();// PIE 表的基本设置
InitPieVectTable();//将默认 ISR 复制到 PIE
EALLOW;
PieVectTable.EPWM1_INT =&ePWM1A_COMPARE_ISR;
WdRegs.WDCR.ALL = 0x00AF;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;// ePWM1A
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//启用上拉
EDIS;
EPwm1Regs.TBCTL.ALL = 0;//默认值
EPwm1Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 1
EPwm1Regs.TBCTL.bit.CTRMODE = 2;//向上/向下计数模式
EPwm1Regs.AQCTLA.ALL = 0x0006;// ZRO=set;PRD=clear
EPwm1Regs.TBPRD = 2250;// 500kHz PWM 频率
// TBPRD = FCPU /(2 * fpwm * CLKDIV * HSPCLKDIV)
// TBPRB = 90MHz /(2 * 500kHz * 1 * 1)
EPwm1Regs.CMPA.bit.CMPA = 1125;//初始占空比50%
EPwm1Regs.AQCTLA.ALL = 0x0060;
// CMPA up =设置;CMPA down =清除
EPwm1Regs.ETSEL.ALL = 0;
EPwm1Regs.ETSEL.bit.INTEN = 1;//启用 ePWM1 int
EPwm1Regs.ETSEL.bit.INTSEL = 5;// CMPA 向下匹配
EPwm1Regs.ETPS.bit.INTPRD = 1;//第一个事件
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;// ePWM1
IER |= 4;//启用 INT3
EINT;//全局 int 启用
while (1)
{
EALLOW;
WdRegs.WDKEY。ALL = 0x55;//服务密钥#1
WdRegs.WDKEY。ALL = 0xAA;//服务密钥#2
EDIS;
}
}
中断空 ePWM1A_COMPARE_ISR (空)
{
静态无符号 int 索引= 0;
EPwm1Regs.CMPA.bit.CMPA = EPwm1Regs.TBPRD -_IQsat (_IQ30mpy ((sine_table[index]+_IQ30 (0.9999)))/2、EPwm1Regs.TBPRD)、EPwm1Regs.TBPRD、0);
如果(index++>511)索引=0;
EPwm1Regs.ETCLR.bit.INT = 1;//清除 ePWM1中断标志
PieCtrlRegs.PIEACk.all = 4;// PIE 组3的 ACK
}
您好!
IQMath 库的.lib IQsinTable 中已有一个正弦表。 您可以通过声明来访问它
extern iq30 IQsincTable[];
文件中。 您不必使用 pragma 放置它、它已放置在"IQmathTables"部分中