从无到有搭建28388项目程序

本文详细介绍了使用TI的C2000系列微控制器,通过CodeComposerStudio9.1.0环境,实现CPU1控制LED1闪烁,CM(Cortex-M4)控制LED2闪烁的过程。包括项目搭建、库文件配置、代码编写及调试步骤,适用于初学者快速掌握C2000双核编程。

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

目标:

通过编写CPU1和CM(Arm® Cortex®-M4)的程序达到以下效果:
CPU1–》LED1闪烁
CM–》LED2闪烁
先来看下最终效果:

开发环境:

CCS版本:Code Composer Studio 9.1.0
C2000版本:v2.01.00.00 (下载安装时间:2020/2/18)
如果还没有下载的可以下载一下:
C2000WARE-MOTORCONTROL-SDK下载
开发板:TI官方的28388开发套件

1. 新建工程

2. 建好之后效果如下:

项目名自己取,但最好CM和CPU1的要区分开
在这里插入图片描述

3. 在你的电脑中将下图的两个文件拷贝到项目中

注:项目创建好之后会有一个默认的CMD文件,但是还是建议用上图中的两个CMD文件,将原来的删掉。

4. 配置项目编译生成二进制文件的文件名和路径

注意:按照(4)中显示的将CM_FLASH和CM_RAM都这样创建出来,名字可以自己取,但要见名知意。

5. 将原来的项目中的Debug文件夹删掉:

在这里插入图片描述

6. 配置CMD文件编译方式:

7. 添加.lib依赖—>二进制文件

8. 添加一些必要的库文件

CM的项目:
CPU1的项目:

CPU1的项目添加图上所示的库文件之后会报错:

解决方案:

9. 在项目中添加上述库文件的路径:

CPU1项目:
CM项目:

10. 在CM和CPU1项目的main.c里面添加测试代码:

CM项目–>main.c:
#include "driverlib_cm.h"
#include "cm.h"
/**
 * main.c
 */
int main(void)
{

    CM_init();

    GPIO_writePin(20, 1);

    for(;;)
    {
        //
        // Turn on LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED2, 0);

        //
        // Delay for a bit.
        //
        SysCtl_delay(5000000);

        //
        // Turn off LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED2, 1);

        //
        // Delay for a bit.
        //
        SysCtl_delay(5000000);
    }
}

CPU1–>main.c:
#include "driverlib.h"
#include "device.h"

//
// Main
//
void main(void)
{
    //
    // Initialize device clock and peripherals
    //
    Device_init();

    //
    // Boot CM core
    //
#ifdef _FLASH
    Device_bootCM(BOOTMODE_BOOT_TO_FLASH_SECTOR0);
#else
    Device_bootCM(BOOTMODE_BOOT_TO_S0RAM);
#endif

    //
    // Initialize GPIO and configure the GPIO pin as a push-pull output
    //
    Device_initGPIO();
    GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);
    GPIO_setPadConfig(DEVICE_GPIO_PIN_LED2, GPIO_PIN_TYPE_STD);
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED2, GPIO_DIR_MODE_OUT);

    //
    // Configure CPU2 to control the LED GPIO
    //
    GPIO_setMasterCore(DEVICE_GPIO_PIN_LED2, GPIO_CORE_CM);

    //
    // Initialize PIE and clear PIE registers. Disables CPU interrupts.
    //
    Interrupt_initModule();

    //
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    //
    Interrupt_initVectorTable();

    //
    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    //
    EINT;
    ERTM;

    //
    // Loop Forever
    //
    for(;;)
    {
        //
        // Turn on LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED1, 0);

        //
        // Delay for a bit.
        //
        DEVICE_DELAY_US(500000);

        //
        // Turn off LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED1, 1);

        //
        // Delay for a bit.
        //
        DEVICE_DELAY_US(500000);
    }
}

//
// End of File
//

程序移植问题:

当上述操作你都顺利完成之后,这时你想把你的项目拷到另一个人的电脑上时,会报出一个错误,如下所示:
在这里插入图片描述
原因分析:根据报错信息意思是说项目中的driverlib_cm.lib文件路径不对
解决方案:
在这里插入图片描述

下载程序到开发板中:

1. 在这里插入图片描述

2.

确保开发板已经跟电脑连接好了

3. 连接芯片:

在这里插入图片描述

4. 连接之后

在这里插入图片描述

注意!!! 对于我们这个实验,要先下载CPU1的程序,点击运行CPU1,然后再下载CM的程序,点击运行CM

5. Ctrl+Alt+L下载程序

6. 点击运行该芯片:

7. 然后连接CM芯片并下载CM的程序(CM_Project_CM_Blinky_CM.out):

8. 最后运行CM就可以了。

最后最后—》观察LED1 LED2是否正常闪烁

疑难杂站:

1. FLASH和RAM下载问题:

现象:用RAM下载程序之后可以正常跑起来,FLASH就不行

在这里插入图片描述

原因分析:
  1. 在这里插入图片描述
    在这里插入图片描述
原因总结:

在我们自己的例程如:C28388_Project_CM_Blinky_CPU1中有些方法的源代码我们直接拷贝到device文件中了,而不需要driverlib.lib文件

解决方案:

将.lib文件删掉,或者不编译

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值