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

news2024/12/26 12:00:11

文章目录

  • 前言
  • 步骤
    • 新建工程
    • 工程管理
    • 拷贝底层文件
  • 添加测试函数
  • 编写main.c测试函数

前言

实验要求利用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;
}

编译通过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LDAP注入漏洞

1、LDAP 注入 LDAP (Light Directory Access Portocol) 是基于X.500标准的轻量级目录访问协议&#xff0c;提供访问目录数据库方法的服务和协议&#xff0c;常用于与目录数据库组成目录服务。其中目录是一个为查询、浏览和搜索而优化的专业分布式数据库&#xff0c;它呈树状结…

Java学习 1.初识Java

1.类名 当这个类被public修饰时 class后的名字 类名必须和文件名相同 public class 类名(文件名); 2.main函数 方法一定是包含在类之中的 3.类里面是函数/方法 由返回值、方法名、参数列表组合而成,方法中可以定义变量&#xff0c;方法体 4.一个文件中可以有多个类 我们建…

【管理运筹学】第 10 章 | 排队论(3,标准的 M/M/1 排队系统)

文章目录 引言一、模型特征及分析二、系统指标1. 在系统中的平均顾客数&#xff08;队长的期望&#xff09;2. 在队列中的平均顾客数&#xff08;队列长的期望&#xff09;3. 在系统中顾客平均逗留时间4. 在队列中顾客的平均等待时间 写在最后 引言 前两篇文章&#xff0c;分别…

李沐——论文阅读——VIT(VIsionTransformer)

一、终极结论&#xff1a; 如果在足够多的数据上面去做预训练&#xff0c;那么&#xff0c;我们也可以不用 卷积神经网络&#xff0c;而是直接用 自然语言处理那边搬过来的 Transformer&#xff0c;也能够把视觉问题解决的很好 &#xff08;tips&#xff1a;paperswithcode.co…

【刷题-PTA】堆栈模拟队列(代码+动态图解)

【刷题-PTA】堆栈模拟队列(代码动态图解) 文章目录 【刷题-PTA】堆栈模拟队列(代码动态图解)题目输入格式:输出格式:输入样例:输出样例: 分析题目区分两栈解题思路伪代码动图演示代码测试 题目 题目描述 : 设已知有两个堆栈S1和S2&#xff0c;请用这两个堆栈模拟出一个队列Q。 …

新华三路由器+华为交换机,实现华为交换机指定端口访问外网

需求背景&#xff1a; 多台服务器使用华为交换机组建了局域网&#xff0c;需要让交换机的指定端口可以访问外网。 需求分析&#xff1a; 交换机组建的局域网是二层组网&#xff0c;需借助路由器接入外网&#xff0c;然后通过DHCP分配内网IP地址给交换机指定端口连接的设备。 …

[资源推荐] 关于计算机毕设的方法论(重庆大学吕昱峰)

第一次刷到这个up主的视频是之前搜cpu设计的时候 视频链接&#xff1a;https://www.bilibili.com/video/BV1j7411P7gt?p1&vd_source0e8431ba6fd78bb2215c36307a75ac1a 最近学校毕设要开题了&#xff0c;但是感觉对毕业设计这个东西还是比较模糊&#xff0c;应该做到什么…

QML自定义电池状进度条

效果: 百分比显示保留两位小数,通过iValue的数值来显示当前进度,注意为了保留小数总值取的是10000,所以你的iValue值也要乘上100 变量说明: cBorderColor:进度条外框的颜色 cContentColor:表示进度的小方块颜色 cTextColor:显示进度百分比的文字颜色 iValue:当前进度,为整数(…

低代码软件的价格考量:成本效益与投资回报

数字化转型的今天&#xff0c;我们常听到“低代码”这个概念&#xff0c;那低代码软件价格到底如何呢&#xff1f;很多厂商并没有公布软件价格情况&#xff0c;让很多企业在采购的时候也是一头雾水。当然&#xff0c;市场上也存在一些厂商公开透明价格&#xff0c;比如Zoho Cre…

皮卡丘靶场——暴力破解

暴力破解 1. 基于表单的暴力破解 在登陆界面随便使用账号密码进行登录&#xff0c;使用bp抓包发送Intruder 我们需要破解账号&#xff08;username&#xff09;和密码&#xff08;password&#xff09;&#xff0c;就应当选择ClusterBomb&#xff08;集束炸弹&#xff09;的攻击…

Java基础篇 | Java8流式编程

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

pytorch_lightning:Validation sanity check: 0%| | 0/2 [00:00<?, ?it/s]

在使用Lighting架构辅助训练时&#xff0c;对于出现的下述情况的原因&#xff1a; 解释&#xff1a; 注意到“ Validation sanity check ”。这是因为Lightning在开始训练之前进行了两批验证。这是一种单元测试&#xff0c;以确保如果你在验证循环中有一个bug&#xff0c;你不…

微信小程序开发之投票管理及小程序UI的使用

目录 一、小程序UI 1.讲述 2. 介绍vantWeapp 3. 使用vantWeapp 安装 构建 依赖 引用 二、后端 1. 后端实体对象 2. 后端接口 3. 实现类 4. 请求处理类 三、前端 1. 定义路径 2. 页面引用 3. 页面 4. 页面美化 5. 数据 6. 效果展示 一、小程序UI 1.讲述 小…

IMU预积分的过程详解

一、IMU和相机数据融合保证位姿的有效性&#xff1a; 当运动过快时&#xff0c;相机会出现运动模糊&#xff0c;或者两帧之间重叠区域太少以至于无法进行特征匹配&#xff0c;所以纯视觉SLAM对快速的运动很敏感。而有了IMU&#xff0c;即使在相机数据无效的那段时间内&#xff…

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…

Java面试(JVM篇)——JVM 面试题合集 深入理解JVM虚拟机

关于什么是JVM&#xff1f; 作用&#xff1a; 运⾏并管理Java 源码⽂件所⽣成的Class⽂件&#xff0c;在不同的操作系统上安装不同的JVM &#xff0c;从⽽实现了跨平台的保证。 ⼀般情况下&#xff0c;对于开发者⽽⾔&#xff0c;即使不熟悉JVM 的运⾏机制并不影响业务代码的…

【Java 进阶篇】Java XML解析:从入门到精通

XML&#xff08;可扩展标记语言&#xff09;是一种常用的数据格式&#xff0c;用于存储和交换数据。在Java中&#xff0c;XML解析是一项重要的任务&#xff0c;它允许您从XML文档中提取和操作数据。本篇博客将从基础开始&#xff0c;详细介绍如何在Java中解析XML文档&#xff0…

进程中的权限是如何操作的

任何一个进程都有父进程。所以&#xff0c;整个进程其实就是一棵进程树。而拥有同一父进程的所有进程都具有兄弟关系。 struct task_struct __rcu *real_parent; /* real parent process */ struct task_struct __rcu *parent; /* recipient of SIGCHLD, wait4() reports */ s…

超市商品管理系统 JAVA语言设计实现

目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的超市商品管理系统&#xff0c;超市区域模块、超市货架模块、商品类型模块、商品档案模块&#xff0c;分为用户网页端和管理后台&#xff0c;基于角色的访问控制&#xff0c;可将权限精确…

c++ qt连接操作sqlite

qt连接操作sqlite qt客户端编程,用到数据库的场景不多,但是部分项目还是需要数据库来保存同步数据,客户端用到的数据库,一般是sqlite。 Qt提供了数据库模块,但是qt本身的数据库模块并不好用,会有各种问题, 建议大家不要,可以自己封装数据库的操作。本篇博客介绍qt连接操…