F28335-可移植新建工程模板-基于bitfield

前言

实验要求利用28335芯片,重新学习一下DSP28335,并做个记录。

值得一提的是,28335只能用寄存器开发,而不能用库函数开发,相应的也不能用Sysconfig进行图形化编程。

步骤

新建工程

按照下图所示,target是开发芯片,选择28335

connection是采用的仿真器型号,选择你使用的那一款

配置工程名

选择新建工程为 带main函数的空工程

点击finish
在这里插入图片描述

此时工程文件夹为
在这里插入图片描述

工程管理

在工程下新建src,inc,control,peripheral,cmd文件夹

  • src文件夹用于拷贝底层驱动源文件
  • inc文件夹用于拷贝底层驱动头文件
  • control文件夹用于放置控制函数,如pid,pr,digital filter以及pll等
  • peripheral文件夹用于放置外设初始化函数,如epwm初始化和adc初始化。毕竟是寄存器开发,不可能做一个项目从头开始写寄存器吧
  • cmd文件夹用于存放cmd文件

最终工程如下图所示
在这里插入图片描述

拷贝底层文件

  1. 将C2000Ware_< version >\device_support\f2833x\common\include文件拷贝至inc文件夹
  2. 将C2000Ware_< version >\device_support\f2833x\common\source文件拷贝至src文件夹
  3. 将C2000Ware_< version >\device_support\f2833x\header\include文件拷贝至inc文件夹
  4. 将C2000Ware_< version >\device_support\f2833x\header\source文件拷贝至src文件夹
  5. 将C2000Ware_< version >\device_support\f2833x\header\cmd文件夹下的DSP2833x_Headers_nonBIOS.cmd文件拷贝至src文件夹
  6. 将新建工程自动生成的28335_RAM_lnk.cmd文件剪切到cmd文件夹
  7. 将工程src文件夹下的DSP2833x_SWPrioritizedDefaultIsr.c以及DSP2833x_SWPrioritizedPieVect.c鼠标右键exclude from build

工程文件如下
在这里插入图片描述

在这里插入图片描述

添加文件搜索路径${PROJECT_ROOT}\inc
在这里插入图片描述

添加测试函数

/**

  • main.c
    */

#include “DSP28x_Project.h”

int main(void)
{
InitSysCtrl(); // configure SYSCLK and disable clock of all peripheral
InitGpio(); // Configure all GPIOs at GPIO functionality, input mode and pull-up enabled
DINT;
// DINT equals INTM = 1, disable global interrupts.
InitPieCtrl(); // reset pie registers
IER = 0x0000; // disable CPU interrupt
IFR = 0x0000; // clear CPU interrupt flag bit
InitPieVectTable(); // reset pie vector table, you may look up vector in the function
EINT;
// EINT equals INTM = 0, enable global interrupts.

/*
 *  user function start
 */

while (1)
{
    static unsigned int i = 0;
    static unsigned int j = 0;
    if (i++ > 2000 - 1)
    {
        i = 0;
        if (j++ > 2000 - 1)
        {
            j = 0;
            GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
        }
    }
}

/*
 * user function end
 */

}
interrupt void epwm1_timer_isr(void)
{
/*
* user control start
*/
static Uint16 cnt = 0;
cnt++;
if (cnt == 5000)
{
cnt = 0;
// LED3_TOGGLE;
}

/*
 * user control end
 */

// Clear INT flag for this timer
EPwm1Regs.ETCLR.bit.INT = 1;
// Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.bit.ACK3 = 1;

}

编写main.c测试函数

/**
 * main.c
 */

#include "DSP28x_Project.h"

int main(void)
{
    InitSysCtrl(); // configure SYSCLK and disable clock of all peripheral
    InitGpio(); // Configure all GPIOs at GPIO functionality, input mode and pull-up enabled
    DINT;
    // DINT equals INTM = 1, disable global interrupts.
    InitPieCtrl(); // reset pie registers
    IER = 0x0000; // disable CPU interrupt
    IFR = 0x0000; // clear CPU interrupt flag bit
    InitPieVectTable(); // reset pie vector table, you may look up vector in the function
    EINT;
    // EINT equals INTM = 0, enable global interrupts.

    /*
     *  user function start
     */

    while (1)
    {
        static unsigned int i = 0;
        static unsigned int j = 0;
        if (i++ > 2000 - 1)
        {
            i = 0;
            if (j++ > 2000 - 1)
            {
                j = 0;
                GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
            }
        }
    }

    /*
     * user function end
     */
}
interrupt void epwm1_timer_isr(void)
{
    /*
     * user control start
     */
    static Uint16 cnt = 0;
    cnt++;
    if (cnt == 5000)
    {
        cnt = 0;
//        LED3_TOGGLE;
    }


    /*
     * user control end
     */

    // Clear INT flag for this timer
    EPwm1Regs.ETCLR.bit.INT = 1;
    // Acknowledge this interrupt to receive more interrupts from group 3
    PieCtrlRegs.PIEACK.bit.ACK3 = 1;
}

编译通过

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天美美吃饭啦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值