本帖最后由 阳阳阳阳阳阳阳阳 于 2021-8-23 14:12 编辑
/****************************************************************** 编 译 器:Haawking IDE V0.5.0 D S P:dsc28027勇士板 电 脑 配 置:Windows10 专业版; 64 位操作系统 仿 真 器:HX100V2 使 用 库:无 作 用:IQmath运算性能测试例程 版 本:V0.0.1 ******************************************************************/ 1. HaawkingIDE新建工程
2.初始化LED /****************************************************************** 函数名:void InitLED() 参 数:无 返回值:无 作 用:初始化LED 说 明:
******************************************************************/
- void InitLED()
- {
- EALLOW;
- D400MUX = 0;
- D400DIR = 1;
- D401MUX = 0;
- D401DIR = 1;
- EDIS;
- }
复制代码
初始化定时器0: /****************************************************************** 参 数:无 返回值:无 作 用:定时器0初始化-1ms 周期 说 明:
******************************************************************/
- void Timer0_init()
- {
- InitCpuTimers();
- //中断配置步骤-----1,开启模块中断使能,位于 Timer->RegsAddr->TCR.bit.TIE = 1;
- ConfigCpuTimer(&CpuTimer0, 12, 1000); // ×12分频×1000次, 即为 1ms中断周期
- CpuTimer0Regs.TCR.bit.TIE = 1; // 使能中断
- CpuTimer0Regs.TCR.bit.TSS = 0; // To start or restart the CPU-timer, set TSS to 0
- //中断配置步骤-----2,重映射中断服务函数
- // Interrupts that are used in this example are re-mapped to
- // ISR functions found within this file.
- EALLOW;
- PieVectTable.TINT0 = &cpu_timer0_isr;
- EDIS;
- //中断配置步骤-----3,连接CPU中断Y
- //IER |= M_INT1;
- IER_ENABLE(M_INT1);
- //中断配置步骤-----4,连接Y中断里的第几位
- PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
- }
复制代码
3. 测试DSC28027调用IQmath库的运算;对比普通数学库运算,这里比较各自运行1秒钟执行的运算次数;运算完毕,D401点亮:
- while(1)
- {
- if( timer0Base.msCounter<1000) //运用IQ计算 1ms(1周期时间)×1000 = 1s
- {
- IQ.iqBuf = _IQsin(_IQmpy(_IQ(PI),_IQdiv(_IQ(1),_IQ(6))));
- IQ.IQarithmeticCNT++;
- }
- else if( timer0Base.msCounter<2000) //直接数学库计算
- {
- IQ.fBuf = sin((1.0/6.0)*PI);
- //IQ.fBuf = sqrt((1.0/6.0)*PI);
- //IQ.fBuf = cos((1.0/6.0)*PI);
- IQ.matharithmeticCNT++;
- }
- else
- {
- DELAY_US(100000); //利用库文件的DELAY函数
- GpioDataRegs.GPADAT.bit.GPIO6 =0; //点亮D401
- timer0Base.msCounter = 2001;
- }
- }
复制代码
4. 点击编译、编译完成后点击下载:
5.实验现象: 运行程序时,Add Watch Expression以下变量: 1. IQ.iqBuf -- 使用IQ库计算的结果(该结果是iq24格式) 2. IQ.IQarithmeticCNT -- 使用IQ库计算的次数 3. IQ.fBuf -- 使用普通数学库计算的结果(float类型) 4. IQ.matharithmeticCNT -- 使用普通数学库计算的次数
运算完毕,D401灯亮。运算结果如下图: |