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.

[参考译文] CCS/TMS320F2808:TMS320F2808

Guru**** 1831610 points
Other Parts Discussed in Thread: TMS320F2808, C2000WARE, CCSTUDIO, SPRC191
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/764145/ccs-tms320f2808-tms320f2808

器件型号:TMS320F2808
主题中讨论的其他器件: C2000WARECCStudioSPRC191

工具/软件:Code Composer Studio

我正在开始使用 TMS320F2808对处理器板进行编程。

我使用的是 Code Composer Studio 8 和仿真器 XDS200。 硬件与 CCS 的通信似乎正常。

我想从   从 http://www.ti.com/tool/SPRC191下载的示例开始

我想根据相关文档  "DSP280x_HeaderFiles_QuickStart_Readme.pdf"进行操作

我位于文档的第6页、我尝试执行步骤 A。 我想从文件菜单执行加载 GEL 命令。

该命令在“文件”菜单中不存在。 我执行步骤 B 和 C 打开文件。 我想继续执行步骤 D

我找不到包含命令 Load_and_build_Project 的下拉菜单。

由于 Code Composer Studio 的运行方式与描述的不符、我完全不能开始使用。

请告诉我文档  "DSP280x_HeaderFiles_QuickStart_Readme.pdf"中的错误是什么、或者我犯了什么错误

请告诉我如何单击"分步运行"集合中的示例、例如 GPIO 引脚振荡的 GPIO 程序?

我的电子邮件地址如下        

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您所参考的文档是为 CCSv3.x 编写的 与3.x 相比、您使用的 CCS 版本(v8)有很大差异 不再支持 CCS3.x。 作为我们产品系列中相对较旧的器件、F2808在 C2000ware 上不受支持。 您有两个选项:

    1.迁移到较新的器件、以便您可以在 C2000ware 中获得无缝支持的优势。 这意味着、您可以使用 C2000ware 中提供的示例快速上手。

    2.您仍然可以运行 DSP 头文件中提供的示例。 但是,您不能使用自述文件中概述的过程。 必须使用 Project->Import Legacy CCS3.3项目选项。 这允许您从 CCS3.x 项目导入.PJT 文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Peter、

    除了 Hareesh 的回复外、为了帮助您了解有关 C2000 MCU 的更多信息、请参阅我们的实践技术讲座、网址为:

    processors.wiki.ti.com/.../C2000_32-bit_Real-Time_MCU_Training

    (请注意、旧版处理器也有存档部分)。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    彼得–我没有听到你的反馈。 我假设您的问题已得到解决。 如果没有、只需在下面发布回复即可。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的朋友,哈雷什先生,

    您建议我在 CCS 8中使用命令 Project => Import Legcy CCSv3.3 Projects。

    导入.pjt"文件并单击"下一步=>完成"后、

    我收到以下错误消息

    迁移时遇到了可能需要您注意的问题

    项目。 有关详细信息、请参阅每个项目根目录中的'project.log'文件。

    日志文件包含(已检查! 请不要使用无法帮助我的言语):


    !配置:'com.ti.ccstudio.buildDefinitions.c2000.Release.1114035985'[Thu Jan 24 17:47:11 CET 2019年]

     !工具:'com.ti.ccstudio.buildDefinitions.C2000_18.1.exe.compilerRelease.1623379253'

      !warning:unresolved option:com.ti.ccstudio.buildDefinitions.C2000_18.1.exe.compilerRelease.1623379253::!--symdebug:dwarf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的问题未得到解决、因为建议在 CCS 中执行的操作会导致错误消息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Peter、
    如果您学习如何从头开始创建工程、而不是尝试将已存在的.pjt 文件(仅与 CCS3.3兼容)导入到 CCS8框架中、则会更好。 所有技术讲座都将介绍从头开始创建新项目的内容。 ‘情况下,您应该遵循有关 F28379D 技术讲座的“CCS”指导,因为它使用 CCSv7。 实验2的说明介绍了如何创建新项目、实验5的说明介绍了如何添加头文件。 但愿这对您有所帮助。

    processors.wiki.ti.com/.../C2000_Multi-Day_Workshop

    请注意、即使研讨会面向的设备与您使用的设备不同、创建项目的过程也是相同的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 FIREND 先生、Hareesh 先生、

    创建新项目并从现有示例中删除必要的代码没有问题。
    我可以创建一个新的 CCS projet、其中包括正确的设置、而不会出现任何问题。

    我的问题是我创建了一个只禁用看门狗的小型程序、将 GPIO 端口设置为输出模式
    并更改 GPIO 引脚的状态。 在我构建项目并加载到 RAM 存储器后(调试命令)
    然后我尝试运行程序、处理器开始在 SPIA 接口上生成信号、例如在 SPIA 引导模式下。
    但是、由于仿真器将覆盖启动模式、因此处理器不必跳转到 SPIA 启动模式
    此外、我的引导模式硬件设置为(1、1、1)=引导至闪存。
    我尝试以步进模式运行程序。 它不执行任何操作、GPIO 信号不工作。
    但是、如果我在程序语句中输入数据、将数据写入 RAM 存储器位置、则它仅在步进模式下工作。
    这就是为什么我不确定我的程序是否正确、并尝试导入100%正确的示例。
    我将创建我的第一个功能程序、我将能够创建任何程序。 我有35年的经验
    微控制器编程。 1983年,我在 Intel 8080上完成了第一个优秀的行业计划。
    对我来说唯一有效的帮助是、如果有人通过团队查看器查看我的屏幕并看到行为
    不能正常工作的 CCS8的所有功能。

    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Peter、

               我不知道您尝试切换哪些 GPIO 引脚,但您尝试切换的 GPIO 引脚是否可以与 SPI 功能多路复用? (有关多路复用选项、请查看 SPRS230N 的表4-16)。  

    您是否在 C:\tidcs\c28\DSP280x\V160\DSP280x_examples\GPIO_toggle 目录中尝试过 example_280xGpioToggle。 这是一个经测试的代码、应该"按原样"工作。 否则、您可以使用附加的代码、这只是几行代码。  

    您使用的是什么硬件? 它是您自己的电路板吗?  

    TeamViewer 被我们的网络阻止;我无法使用它。

    #include "DSP280x_Device.h"
    
    main ()
    
    {
    
    asm (" EALLOW ");
    
    //禁用看门狗*
    
    SysCtrlRegs.WDCR = 0x006F;
    
    //配置 GPIO 引脚*/
    
    GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
    GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
    
    //切换 GPIO 引脚*/
    
    while (1)
    {
    GpioDataRegs.GPATOGGLE.BIO0 = 1;
    }
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    亲爱的朋友,哈雷什先生,

    我尝试运行由您发送的代码。 有两个问题。

    编译工程时、编译器找不到头文件。
      我已经安装了从互联网下载的 SPRC191文件中的头文件。
      安装程序根据正式文档创建了头文件结构
      "DSP280x_HeaderFiles_QuickStart_Readme.pdf"、它们位于"C:\tidcs"目录中。
      但是、Code Compose Studio 无法找到头文件。
      我已将"DSP280x_Device.h"复制到工作空间中的项目目录中。
      编译器无法找到"DSP280x_Device.h"中包含的其他头文件。
      如果我将所有必需的头文件复制到我的项目目录中、编译器仍然是
      无法编译工程、因为重要结构被定义为外部结构:

      extern volatile struct SYS_CTRL_regs SysCtrlRegs;
      extern volatile struct GPIO_CTRL_regs GpioCtrlRegs;
      extern volatile 结构 gpio_data_regs GpioDataRegs;

      我可以更正删除"extern "一词的错误、并且可以编译工程。
      由于许多问题、我创建了我自己的单头文件"GPIO_example.h"
      仅从所有头文件中提取有用的定义。 您可以在下面的末尾看到它
      我用非标准的方法解决了这个问题。 请告诉我犯了什么错误
      Code Composer Studio 无法找到头文件和编译器
      说明未定义结构、我必须更正头文件中的错误。

    第二个问题是我无法解决的真正问题。
      我必须对您发送的代码进行更改、我替换了"DSP280x_Device.h"
      "GPIO_example.h"创建的。
      我可以构建项目、将其加载到 RAM 存储器中并运行它。
      我发现在运行该程序后、处理器会跳转到 SPI 引导模式。
      此行为完全不依赖于"main.c"文件中的程序代码。
      通过示波器、我可以在 SPIA 接口的四个引脚上看到典型行为

    与 SPI 引导模式完全对应的时钟、数据和控制信号。

    我有一个专业的处理器板、它来自用于感应电机的频率转换器

    具有用于仿真器的连接器。
    我有一个完全禁止发布的电路板方案、很明显、所有启动模式都是如此
    引脚具有上拉电阻器、从而产生111引导模式(引导至闪存)。
    我无法理解处理器跳转到 SPI 引导模式的原因
    无论我编写什么程序。

    我认为你找不到这个问题的答案。
    我要求您至少将我的头文件问题1的答案发送给我。

    这是我自己的头文件代码


    typedef unsigned int   uint16;
    typedef unsigned long  uint32;

    struct GPACTRL_bits{       // bits  description
      UINT16 QUALPRD0:8;       // 7:0   四周期
      uint16 QUALPRD1:8;       // 15:8  四周期
      uint16 QUALPRD2:8;       // 23:16 四周期
      uint16 QUALPRD3:8;       // 31:24 四个周期
    };

    UNION GPACTRL_REG{
      uint32             all;
      结构 GPACTRL_BITS 位;
    };

    struct GPBCTRL_bits{       // bits  description
      UINT16 QUALPRD0:8;       // 7:0   四周期
      uint16 rsvd1:8;          //保留15:8   
      uint16 rsvd2:16;         // 31:16 保留
    };

    UNION GPBCTRL_REG{
      uint32             all;
      结构 GPBCTRL_BITS 位;
    };

    struct GPA1_bits{           // bits  description
      UINT16 GPIO0:2;           // 1:0   GPIO0
      UINT16 GPIO1:2;           // 3:2   GPIO1
      uint16 GPIO2:2;           // 5:4   GPIO2
      UINT16 GPIO3:2;           // 7:6   GPIO3
      UINT16 GPIO4:2;           // 9:8   GPIO4
      UINT16 GPIO5:2;           // 11:10 GPIO5
      UINT16 GPIO6:2;           // 13:12 GPIO6
      UINT16 GPIO7:2;           // 15:14 GPIO7
      UINT16 GPIO8:2;           // 17:16 GPIO8
      UINT16 GPIO9:2;           // 19:18 GPIO9
      UINT16 GPIO10:2;          // 21:20 GPIO10
      UINT16 GPIO11:2;          // 23:22 GPIO11
      UINT16 GPIO12:2;          // 25:24 GPIO12
      UINT16 GPIO13:2;          // 27:26 GPIO13
      UINT16 GPIO14:2;          // 29:28 GPIO14
      UINT16 GPIO15:2;          // 31:30 GPIO15
    };

    struct GPA2_bits{           // bits  description
      UINT16 GPIO16:2;          // 1:0   GPIO16
      UINT16 GPIO17:2;          // 3:2   GPIO17
      UINT16 GPIO18:2;          // 5:4   GPIO18
      UINT16 GPIO19:2;          // 7:6   GPIO19
      UINT16 GPIO20:2;          // 9:8   GPIO20
      UINT16 GPIO21:2;          // 11:10 GPIO21
      UINT16 GPIO22:2;          // 13:12 GPIO22
      UINT16 GPIO23:2;          // 15:14 GPIO23
      UINT16 GPIO24:2;          // 17:16 GPIO24
      UINT16 GPIO25:2;          // 19:18 GPIO25
      UINT16 GPIO26:2;          // 21:20 GPIO26
      UINT16 GPIO27:2;          // 23:22 GPIO27
      UINT16 GPIO28:2;          // 25:24 GPIO28
      UINT16 GPIO29:2;          // 27:26 GPIO29
      UINT16 GPIO30:2;          // 29:28 GPIO30
      UINT16 GPIO31:2;          // 31:30 GPIO31
    };

    struct GPB1_bits{           // bits  description
      UINT16 GPIO32:2;          // 1:0   GPIO32
      UINT16 GPIO33:2;          // 3:2   GPIO33
      UINT16 GPIO34:2;          // 5:4   GPIO34
      uint16 rsvd1:2;           // 7:6   保留
      uint16 rsvd2:8;           //保留15:8   
      uint16 rsvd3:16;          // 31:16 保留
    };

    struct gpb2_bits {          // bits  description
      uint16 rsvd1:16;          //保留15:0   
      uint16 rsvd2:16;          // 31:16 保留
    };

    UNION GPA1_REG{
      uint32             all;
      struct GPA1_BITS   ;
    };

    UNION GPA2_REG{
      uint32             all;
      struct GPA2_BITS   位;
    };

    UNION GPB1_REG{
      uint32             all;
      struct GPB1_bits   位;
    };

    UNION GPB2_REG{
      uint32             all;
      struct GPB2_bits   位;
    };

    struct GPADAT_Bits{         //位  描述
      UINT16 GPIO0:1;           // 0     GPIO0
      UINT16 GPIO1:1;           // 1     GPIO1
      uint16 GPIO2:1;           // 2     GPIO2
      UINT16 GPIO3:1;           // 3     GPIO3
      UINT16 GPIO4:1;           // 4     GPIO4
      UINT16 GPIO5:1;           // 5     GPIO5
      UINT16 GPIO6:1;           // 6     GPIO6
      UINT16 GPIO7:1;           // 7     GPIO7
      UINT16 GPIO8:1;           // 8     GPIO8
      UINT16 GPIO9:1;           // 9     GPIO9
      UINT16 GPIO10:1;          // 10    GPIO10
      UINT16 GPIO11:1;          // 11    GPIO11
      UINT16 GPIO12:1;          // 12    GPIO12
      UINT16 GPIO13:1;          // 13    GPIO13
      UINT16 GPIO14:1;          // 14    GPIO14
      UINT16 GPIO15:1;          // 15    GPIO15
      UINT16 GPIO16:1;          // 16    GPIO16
      UINT16 GPIO17:1;          // 17    GPIO17
      UINT16 GPIO18:1;          // 18    GPIO18
      UINT16 GPIO19:1;          // 19    GPIO19
      UINT16 GPIO20:1;          // 20    GPIO20
      UINT16 GPIO21:1;          // 21    GPIO21
      UINT16 GPIO22:1;          // 22    GPIO22
      UINT16 GPIO23:1;          // 23    GPIO23
      UINT16 GPIO24:1;          // 24    GPIO24
      UINT16 GPIO25:1;          // 25    GPIO25
      UINT16 GPIO26:1;          // 26    GPIO26
      UINT16 GPIO27:1;          // 27    GPIO27
      UINT16 GPIO28:1;          // 28    GPIO28
      UINT16 GPIO29:1;          // 29    GPIO29
      UINT16 GPIO30:1;          // 30    GPIO30
      UINT16 GPIO31:1;          // 31    GPIO31
    };

    struct GPBDAT_bits{         // bits  description
      UINT16 GPIO32:1;          // 0     GPIO32
      UINT16 GPIO33:1;          // 1     GPIO33
      UINT16 GPIO34:1;          // 2     GPIO34
      uint16 rsvd1:13;          //保留15:3   
      uint16 rsvd2:16;          // 31:16 保留
    };

    UNION GPADD_REG{
      uint32             all;
      struct GPADD_BITS 位;
    };

    UNION GPBDAT_REG{
      uint32             all;
      结构 GPBDAT_Bits 位;
    };

    struct GPBPUD_BITS{         //位  描述
      UINT16 GPIO32:1;          // 0     GPIO32
      UINT16 GPIO33:1;          // 1     GPIO33
      UINT16 GPIO34:1;          // 2     GPIO34
      UINT16 GPIO35:1;          // 3     GPIO35
      uint16 rsvd1:12;          //保留15:4   
      uint16 rsvd2:16;          // 31:16 保留
    };

    UNION GPBPUD_REG{
      uint32             all;
      结构 GPBPUD_BITS 位;
    };

    struct gpioXINT_bits{       // bits  description
       UINT16 GPIOSEL:5;        // 4:0   选择 GPIO 中断输入源
       uint16 rsvd1:11;         //保留15:5   
    };

    UNION GPIOXINT_REG{
      uint16               全部;
      结构 GPIOXINT_BITS 位;
    };

    结构 GPIO_CTRL_regs{
      UNION GPACTRL_REG GPACTRL;  // GPIO A 控制寄存器(GPIO0至31)
      UNION GPA1_REG    GPAQSEL1; // GPIO A 限定器选择1寄存器(GPIO0至15)
      UNION GPA2_REG    GPAQSEL2; // GPIO A 限定器选择2寄存器(GPIO16至31)
      UNION GPA1_REG    GPAMUX1;  // GPIO A Mux 1寄存器(GPIO0至15)
      UNION GPA2_REG    GPAMUX2;  // GPIO A Mux 2寄存器(GPIO16至31)
      UNION GPADD_REG  GPADIR;   // GPIO A 方向寄存器(GPIO0至31)
      UNION GPADD_REG  GPAPUD;   // GPIO A 上拉禁用寄存器(GPIO0至31)
      uint32             rsvd1;
      UNION GPBCTRL_REG GPBCTRL;  // GPIO B 控制寄存器(GPIO32至63)
      UNION GPB1_REG    GPBQSEL1; // GPIO B 限定器选择1寄存器(GPIO32至47)
      UNION GPB2_REG    GPBQSEL2; // GPIO B 限定器选择2寄存器(GPIO48至63)
      UNION GPB1_REG    GPBMUX1;  // GPIO B 多路复用器1寄存器(GPIO32至47)
      UNION GPB2_REG    GPBMUX2;  // GPIO B 多路复用器2寄存器(GPIO48至63)
      UNION GPBDAT_REG  GPBDIR;   // GPIO B 方向寄存器(GPIO32至63)
      UNION GPBPUD_REG  GPBPUD;   // GPIO B 上拉禁用寄存器(GPIO32至63)
      uint16             rsvd2[33];
    };

    结构 GPIO_DATA_regs{
      UNION GPADD_REG      GPADAT;      // GPIO 数据寄存器(GPIO0至31)
      UNION GPADD_REG      GPASET;      // GPIO 数据设置寄存器(GPIO0至31)
      UNION GPADD_REG      GPACLEAR;    // GPIO 数据清除寄存器(GPIO0至31)
      UNION GPADD_REG      GPATOGGLE;   // GPIO 数据切换寄存器(GPIO0至31)
      UNION GPBPUD_REG      GPBDAT;      // GPIO 数据寄存器(GPIO32至63)
      UNION GPBDAT_REG      GPBSET;      // GPIO 数据设置寄存器(GPIO32至63)
      UNION GPBDAT_REG      GPBCLEAR;    // GPIO 数据清除寄存器(GPIO32至63)
      UNION GPBDAT_REG      GPBTOGGLE;   // GPIO 数据切换寄存器(GPIO32至63)
      uint16                 rsvd1[16];
    };

    结构 GPIO_INT_regs{
      UNION GPIOXINT_REG    GPIOXINT1SEL;// XINT1 GPIO 输入选择
      UNION GPIOXINT_REG    GPIOXINT2SEL;// XINT2 GPIO 输入选择
      UNION GPIOXINT_REG    GPIOXNMISEL; // XNMI_XINT13 GPIO 输入选择
      uint16                 rsvd2[5];
      UNION GPADD_REG      GPIOLPMSEL;  //低功耗模式 GP I/O 输入选择
    };

    struct XCLK_bits  {   // bits description
      UINT16 XCLKOUTDIV:2;// 1:0  XCLKOUT 分频比
      UINT16 XCLKOUTDAT:1;// 2    保留仅供 TI 使用
      UINT16 X1DAT:1;     // 3    保留仅供 TI 使用
      UINT16 XCLKINDAT:1; // 4    保留仅供 TI 使用
      uint16 rsvd1:3;     // 7:5  保留
      UINT16 X1CNT:4;     // 11:8 保留仅供 TI 使用
      UINT16 XCLKINCNT:4; // 15:12保留仅供 TI 使用
    };

    UNION XCLK_REG{
      uint16             全部;
      struct XCLK_bits   位;
    };

    struct PLLSTS_bits  {   // bits description
      UINT16 PLLLOCKS:1;    // 0    PLL 锁定状态
      uint16 CLKINDIV:1;    // 1    CLKIN div x 2
      UINT16 PLLOFF:1;      // 2    PLL OFF 位
      UINT16 MCLKSTS:1;     // 3    缺少时钟状态位
      UINT16 MCLKCLR:1;     // 4    缺少时钟清零位
      UINT16 OSCOFF:1;      // 5    振荡器时钟关闭
      UINT16 MCLKOFF:1;     // 6    缺少时钟检测
      uint16 rsvd2:9;       //保留15:7  
    };

    UNION PLLSTS_REG{
      uint16             全部;
      结构 PLLSTS_BITS 位;
    };

    struct HISPPC_bits {  // bits description
      UINT16 HSPCLK:3;    //相对于  SYSCLKOUT 的2:0速率
      uint16 rsvd1:13;    //保留15:3  
    };

    UNION HISPP_REG{
      uint16             全部;
      struct HISPPC_BITS 位;
    };

    struct LOSPPC_bits {  // bits description
      UINT16 LSPCLK:3;    //相对于  SYSCLKOUT 的2:0速率
      uint16 rsvd1:13;    //保留15:3  
    };

    UNION LOSPPC_REG{
      uint16             全部;
      结构 LOSPPC_BITS 位;
    };

    struct PCLKCR0_bits { // bits description
      uint16 rsvd1:2;     //保留1:0   
      UINT16 TBCLKSYNC:1; // 2    EWPM 模块 TBCLK 使能/同步
      UINT16 ADCENCLK:1;  // 3    启用到 ADC 的高速时钟
      UINT16 I2CAENCLK:1; // 4    使能 SYSCLKOUT 至 I2C-A
      uint16 rsvd2:1;     //保留5     
      UINT16 SPICENCLK:1; // 6    启用到 SPI-C 的低速时钟
      UINT16 SPIDENCLK:1; // 7    启用到 SPI-D 的低速时钟
      UINT16 SPIANCLK:1; // 8    启用到 SPI-A 的低速时钟
      UINT16 SPIBENCLK:1; // 9    启用到 SPI-B 的低速时钟
      UINT16 SCIAENCLK:1; // 10   使能低速时钟到 SCI-A
      UINT16 SCIBENCLK:1; // 11   启用到 SCI-B 的低速时钟
      uint16 rsvd3:2;     // 13:12保留
      UINT16 ECANAENCLK:1;// 14   使能系统时钟到 eCAN-A
      UINT16 ECANBENCLK:1;// 15   使能系统时钟到 eCAN-B
    };

    UNION PCLKCR0_REG{
      uint16             全部;
      struct PCLKCR0_bits 位;
    };

    struct PCLKCR1_bits {   // bits description
      UINT16 EPWM1ENCLK:1;  // 0    使能 SYSCLKOUT 到 EPWM1
      UINT16 EPWM2ENCLK:1;  // 1    使能 SYSCLKOUT 到 EPWM2
      UINT16 EPWM3ENCLK:1;  // 2    启用到 EPWM3的 SYSCLKOUT
      UINT16 EPWM4ENCLK:1;  // 3    启用到 EPWM4的 SYSCLKOUT
      UINT16 EPWM5ENCLK:1;  // 4    使能 SYSCLKOUT 到 EPWM5
      UINT16 EPWM6ENCLK:1;  // 5    使能 SYSCLKOUT 到 EPWM6
      uint16 rsvd1:2;       // 7:6  保留
      UINT16 ECAP1ENCLK:1;  // 8    使能 SYSCLKOUT 至 ECAP1
      UINT16 ECAP2ENCLK:1;  // 9    启用到 ECAP2的 SYSCLKOUT
      UINT16 ECAP3ENCLK:1;  // 10   使能 SYSCLKOUT 至 ECAP3
      UINT16 ECAP4ENCLK:1;  // 11   使能 SYSCLKOUT 到 ECAP4
      uint16 rsvd2:2;       // 13:12保留
      UINT16 EQEP1ENCLK:1;  // 11   启用到 EQEP1的 SYSCLKOUT
      UINT16 EQEP2ENCLK:1;  // 11   启用到 EQEP2的 SYSCLKOUT
    };

    UNION PCLKCR1_REG{
      uint16             全部;
      struct PCLKCR1_BITS;
    };

    struct PLLCR_Bits{     // bits description
      uint16 DIV:4;        // 3:0  设置 PLL 的时钟比率
      uint16 rsvd1:12;     //保留15:4  
    };

    UNION PLLCR_REG{
      uint16            全部;
      结构 PLLCR_Bits 位;
    };

    struct LPMCR0_bits{    // bits description
      uint16 LPM:2;        // 1:0  设置低功耗模式
      UINT16 QUALSTDBY:6;  // 7:2  鉴定
      uint16 rsvd1:7;      // 14:8 保留
      UINT16 WDINTE:1;     // 15   使 WD 从 STANDBY 唤醒器件
    };

    UNION LPMCR0_REG{
      uint16             全部;
      struct LPMCR0_bits 位;
    };

    结构 SYS_CTRL_regs{
      UNION  XCLK_REG   XCLK;     // 0
      UNION  PLLSTS_REG PLLSTS;   // 1.
      uint16             rsvd1[8]; // 2-9.
      UNION  HISPP_REG HISPCP;   // 10:高速外设时钟预分频器
      UNION  LOSPPC_REG LOSPCP;   // 11:低速外设时钟预分频器
      UNION  PCLKCR0_REG PCLKCR0;  // 12:外设时钟控制寄存器
      UNION  PCLKCR1_REG PCLKCR1;  // 13:外设时钟控制寄存器
      UNION  LPMCR0_REG LPMCR0;   // 14:低功耗模式控制寄存器0
      uint16             rsvd2;    // 15:保留
      uint16             rsvd3;    // 16:保留
      UNION  PLLCR_REG  PLLCR;    // 17:PLL 控制寄存器
      UINT16             SCSR;     // 18:系统控制和状态寄存器
      uint16             WDCNTR;   // 19:WD 计数器寄存器
      uint16             rsvd4;    // 20
      UINT16             WDKEY;    // 21:WD RESET KEY 寄存器
      uint16             rsvd5[3]; // 22-24
      uint16             WDCR;     // 25:WD 定时器控制寄存器
      uint16             rsvd6[6]; // 26-31
    };

    volatile struct GPIO_CTRL_regs GpioCtrlRegs;
    volatile struct GPIO_DATA_regs GpioDataRegs;
    volatile struct SYS_CTRL_regs SysCtrlRegs;

    #define DINT  asm (" SETC INTM")
    #define EALLOW asm (" EALLOW ")
    #define EDIS  asm (" EDIS")

    cregister volatile unsigned int IFR;
    cregister volatile unsigned int IER;

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Peter、

    对于项目1、请参阅本主题前面提到的《车间维修手册》。 研讨会使用本地头文件副本、该副本提供了可移植性、还使研讨会文件自包含、与其他支持文件或资源无关。 但是、您可以通过在构建选项中指定直接路径来使用头文件的默认位置。 了解车间中的工作可能更容易。

    要了解实验课程中使用的文件结构(也可用于您的项目)、请首先查看第2-18页(第42页)上的幻灯片。 此幻灯片将让您了解如何使用文件夹。 您将注意到头文件有一个相同的副本、其中包含三个文件夹- cmd、include、source。 接下来是一个包含 include 文件夹的 Lab_common 文件夹。 请下载实验代码并检查文件夹中的文件。 请注意、这些文件适用于 F2837xD、但为 F2808创建这种类型的文件结构将非常相似。

    接下来、从第3-1页(第49页)开始查看模块3。 使用头文件需要三个步骤-您需要(1)将[#include "F28xx_device.h"]添加到每个源文件中,(2)将[F2837xD_GlobalVariableDefs.c]添加到 CCS 项目中,(3)将链接器命令文件[F28xx_nonBIOS.cmd]添加到 CCS 项目中。

    现在、请参阅实验5练习、第5-24页(第110页)的第3步以设置构建选项。 如果使用头文件的默认安装,请将路径更改为正确的位置。 请注意、专题讨论会的 Lab.h 文件与头文件中的 F28xx_examples.h 文件等效。

    我希望这有助于您开始使用头文件、而无需对其进行任何修改。

    - Ken