DSP_CCS实现变量的实时曲线显示

本文介绍了两种在DSP上实现实时曲线显示的方法:一是利用DSP自带的延时函数;二是通过配置定时器实现,适用于大型项目。文章提供了具体代码示例及CCS配置说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

代码

1、用DSP自带的延时函数的写法

2、定时器的写法 (大项目肯定选择这种写法)

CCS配置

视频


 

代码

注意:我们的曲线画的是y

1、用DSP自带的延时函数的写法

#include <main.h>

float y[100];
float t = 0.0;
void main(void)
{
    int i;

    while(1){
        t = t + 0.05;
        if(t > 100) t = 0;
        for(i = 1; i < 100; i++){
            y[i-1] = y[i];
        }
        y[99] = 10 * sin(2 * 3.1415926 * 2 * t);

        DELAY_US(50000);    // 20Hz

    }
}

2、定时器的写法 (大项目肯定选择这种写法)


float y[100];
float t = 0.0;

#define SYS_BASIC_FREQUENCY 2000

#define CNT1HZ      2000
#define CNT2HZ      1000
#define CNT20HZ     100
#define CNT40HZ     50
#define CNT50HZ     40
#define CNT100HZ    20
#define CNT200HZ    10
#define CNT250HZ    8
#define CNT500HZ    4
#define CNT1000HZ   2
#define CNT2000HZ   1

int16   iFreqCnt    = 0;
int16   iFreq1Hz    = 0;
int16   iFreq2Hz    = 0;
int16   iFreq20Hz   = 0;
int16   iFreq40Hz   = 0;
int16   iFreq50Hz   = 0;
int16   iFreq100Hz  = 0;
int16   iFreq200Hz  = 0;
int16   iFreq250Hz  = 0;
int16   iFreq500Hz  = 0;
int16   iFreq1000Hz = 0;
int16   iFreq2000Hz = 0;
int16   iFreq2500Hz = 0;
int16   iFreq5000Hz = 0;


void main(void){

    InitSysCtrl();
    DINT;
    InitPieCtrl();
    InitGpio();
    IER     = 0x0000;
    IFR     = 0x0000;
    InitPieVectTable();

    InitCpuTimers();        //  Initialize CPU Timers


    // CPU Timer0
    ConfigCpuTimer(&CpuTimer0, 200, 1000000/SYS_BASIC_FREQUENCY);
    CpuTimer0Regs.TCR.bit.TIE   = 1;        //  1: The CPU-Timer interrupt is enabled

    // TIMER0 INT1.7 [Page102: Table 3-2.PIE Channel Mapping]
    EALLOW;
    PieVectTable.TIMER0_INT = &CpuTimer0ISR;  //  Specify the interrupt service routine
    EDIS;

    IER |= M_INT1;                          //  Enable CPU Level interrupt
    PieCtrlRegs.PIEIER1.bit.INTx7   = 1;    //  Enable PIE Level interrupt






    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
    EINT;  // 使能全局中断
    ERTM;  // 使能实时仿真中断


    CpuTimer0Regs.TCR.bit.TSS   = 0;          // 使能CPUTimer0

}
    

interrupt void CpuTimer0ISR(void){
    int i;
    DivideFreq();

    if(iFreq20Hz){
        t = t + 0.05;
        if(t > 100) t = 0;

        for(i = 1; i < 100; i++){
            y[i-1] = y[i];
        }
        y[99] = 10 * sin(2 * 3.1415926 * 0.5 * t);
    }

    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}



//  Generate frequency division signal
void DivideFreq(void){

    if(iFreqCnt >= CNT1HZ){
        iFreq1Hz    = 1;
        iFreqCnt    = 0;
    }else{
        iFreq1Hz    = 0;
    }

    if((iFreqCnt%CNT2HZ)==0){
        iFreq2Hz    = 1;
    }else{
        iFreq2Hz    = 0;
    }

    if((iFreqCnt%CNT20HZ)==0){
        iFreq20Hz    = 1;
    }else{
        iFreq20Hz    = 0;
    }

    if((iFreqCnt%CNT40HZ)==0){
        iFreq40Hz    = 1;
    }else{
        iFreq40Hz    = 0;
    }


    if((iFreqCnt%CNT50HZ)==0){
        iFreq50Hz    = 1;
    }else{
        iFreq50Hz    = 0;
    }

    if((iFreqCnt%CNT100HZ)==0){
        iFreq100Hz    = 1;
    }else{
        iFreq100Hz    = 0;
    }

    if((iFreqCnt%CNT200HZ)==0){
        iFreq200Hz    = 1;
    }else{
        iFreq200Hz    = 0;
    }

    if((iFreqCnt%CNT250HZ)==0){
        iFreq250Hz    = 1;
    }else{
        iFreq250Hz    = 0;
    }

    if((iFreqCnt%CNT500HZ)==0){
        iFreq500Hz    = 1;
    }else{
        iFreq500Hz    = 0;
    }

    if((iFreqCnt%CNT1000HZ)==0){
        iFreq1000Hz    = 1;
    }else{
        iFreq1000Hz    = 0;
    }


    if((iFreqCnt%CNT2000HZ)==0){
        iFreq2000Hz    = 1;
    }else{
        iFreq2000Hz    = 0;
    }
/*
    if((iFreqCnt%CNT2500HZ)==0){
        iFreq2500Hz    = 1;
    }else{
        iFreq2500Hz    = 0;
    }

    if((iFreqCnt%CNT5000HZ)==0){
        iFreq5000Hz    = 1;
    }else{
        iFreq5000Hz    = 0;
    }
*/

    iFreqCnt++;

}



CCS配置

运行仿真之后, 选择Tools->Graph->Singel Time

92060f1bcb9a4935af254f61f8195a21.jpeg

对属性进行以下配置 

 0625550bc1d54757b2aff0efe5c9b05e.png

视频

按照以上代码及配置之后的运行结果如下视频所示

DSP实时曲线显示

CCS支持的刷新速度实在是太慢了,20Hz凑合用吧。

类似内容参考链接:CCS使用教程07:曲线图形显示工具_ccs波形窗口怎么打开-CSDN博客

感谢您的阅读,欢迎留言讨论、收藏、点赞、分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖上都叫我秋博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值