从无到有搭建28388项目程序
程序员文章站
2022-06-09 13:03:06
...
目标:
通过编写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是否正常闪烁
下一篇: 【C语言总结】C语言高级指针