# 写在前面
PS: 图床出问题了,图片会有些糊,新浪直接上传图像有很大失真,等大佬维护好图床之后,或者我找到新图床后,再去更新一下这里的图片
电赛延期了,虽然我不觉的今年的控制类题会是网上说的什么球形机器人,不过我也对控制题不怎么感兴趣
刘哥说了要做,那就做呗.
第一次说延期的时候打算直接拿 32 做球形机器人,现在开赛遥遥无期,就先学学 TI 的 DSP , 他们说这个搞电机控制非常好.
原本是想让我拿一块 TI 的 TMS320F28553 学的,结果莫得,只能拿这个双核的 TMS320F28379 开始我的 DSP 学习之旅.
TI 的 CCS 和 资料找起来是真的麻烦.(我还是喜欢 MDK)
学吧学吧,为了梦想!
# 最最最最大前提说明
PS: 本教程环境为 Windows10 + CCS 10.4.0.00006 + C2000Ware + VSCode
# 安装 CCS 10.4.0
PS: CCS 安装路径不能有任何中文,计算机的用户也不能是中文的!!!
诸位如果是中文用户名,最简单的方法就是,重装电脑 (狗头).
但事实就是重装系统是最省事的方法.
不过肯定会有人像我这样,知道鸽子飞起来,不知道鸽子用啥飞的人.
如果这样的话,自行搜索 windows 修改电脑用户名称,大部分网上教程还是能说明白的.
直接修改是没用的,还要修改注册表,桌面路径,C 盘的用户名称.
C2000Ware 这玩意我装了三天,删了好多次注册表,才装上去的.
再也不用中文用户名了,颓废.
言归正传,CCS 的 安装包可以直接去官网下载,这里给诸位贴一个下载链接: 传送门
进去之后保持英文界面,中文界面可能导致找不到下载界面,但是可以鼠标右键谷歌翻译 (封杀成这样了吗...)
然后点击 Download 进入下载区域
点击第一个,会弹出一个对话框选择第一个里的 windows 版本
下载完毕后和正常软件安装方式类似
不过 CCS 这里有一个检测,分别检测 系统,安装路径,中文字符 (Unicode 字符) 和反病毒软件
其中 Unicode 检测就是中文字符检测,前三个要是 有异常是无法安装 CCS 的.
后面杀毒软件是个提示,无关紧要,一般不出问题
然后就是安装路径,安装包选择 (没必要选 full installation),
接下去就是选择软件包了,C2000 少不了,顺带安装了 MSP430 和 432
然后是调试器安装,我全选了,诸位按需修改
后面就是无脑 next, 在经过数分钟的猫猫摸鱼后,CCS 就安装完毕了
# 安装 C2000Ware
安装这是因为,28379 毕竟是 32 位的 DSP 辣么多寄存器,配置不过来,还是得用库函数
C2000Ware 里有大量的例程,可以用于学习,能在学东西的时候少走些弯路.
话又说会来,底层的寄存器在配置的时候发生了什么变化,还是需要知道的
PS: 安装这一块我就不截图了,放个链接: 传送门
C2000Ware 的安装要比 CCS 来的简单,我们只需要选择路径就好,
除了 C2000Ware 之外还有一个 软件也有历程,但是说是历程少,我就没怎么留心
又是几分钟的猫猫摸鱼,装完之后没有快捷方式会出现在你安装路径中
PS: 用户名是中文但是修改成英文的猫猫需要注意,可能会出现找不到开始菜单栏的错误,在安装过程中,如果出现这个错误,就乖乖的去把注册表里的你之前的中文用户名相关的信息全部改了我也不太清楚是哪一个东西的问题,我是改了快 6 个点
安装完毕后大概是这样的
boards 文件夹是 TI 的 LaunchPad 的历程
device_support 和 driverlib 都是库函数 具体区别我没分清楚
libraries 和 example 都是 历程,具体区别我也没分清楚,以后学明白了再回来补充说明
# 新建 Empty 工程
这里我比较懒,而且不熟悉 手中的 LaunchPad 到底需要什么 配置我选择直接导入历程中的 empty_project
等以后学明白再来更新,徒手建立新工程的方法
打开 CCS , 选择工作区,自行新建文件夹
进去后界面如下,点击 file 然后选择 import
接着会弹出一个导入类型选择,我们选 CCS project
选完之后会出现一个新的界面,点击 Browse 在 C2000Ware 安装的路径下找到自己型号的 Project
然后点击 Finish, 就可以看到这个界面了,同时 import 的工程会在你的工作区中生成,不会在原文件中 修改
在 CCS 中没有 Download , 只有 DEBUG, 习惯就好,至于其他功能我还在琢磨
# 学习启动仪式:点个灯
一个空工程建立完毕了,为了有点仪式感,点个灯庆祝一下.
我去翻了一下原理图,D9 和 D10 分别是 pin 31 和 pin 34.
无论啥板子,LED 点亮无非就是 GPIO 操作.
把 GPIO 配置成 什么模式,上拉还是下来,输出什么电平,不认识寄存器直接先去查查 库函数
奈何我英语太差没看明白,直接去翻例程,发现 涉及到几个函数
配置引脚工作模式void GPIO_setPadConfig(uint32_t pin, uint32_t pinType)
配置引脚输出方向void GPIO_setDirectionMode(uint32_t pin, GPIO_Direction pinIO)
配置引脚出电压static inline void GPIO_writePin(uint32_t pin, uint32_t outVal)
这些函数在库里都有注释,不过全是英文的,还在我的阅读能力之内.
注释可以直接看到参数范围,或者取什么参数.
这里我直接贴一下我的源码
/** | |
* @file main.c | |
* @author BlackSheep (blacksheep.208h@gmail.com) | |
* @brief | |
* @version 0.1 | |
* @date 2021-08-11 | |
* | |
* @copyright Copyright (c) 2021 | |
* | |
*/ | |
// | |
// Included Files | |
// | |
#include "driverlib.h" | |
#include "device.h" | |
// LED Marco | |
#define LED_ON 0 | |
#define LED_OFF 1 | |
#define DEVICE_DELAY_MS(x) DEVICE_DELAY_US((x) * 1000) | |
// funcation | |
// | |
void setupLED(void); | |
void LED_trunON(uint32_t pin); | |
void LED_turnOFF(uint32_t pin); | |
void LED_Toggle(uint32_t pin); | |
// Main | |
// | |
void main(void) | |
{ | |
// Initializes system control, device clock, and peripherals | |
Device_init(); | |
Device_initGPIO(); | |
// Initializes LED GPIO | |
setupLED(); | |
Interrupt_initModule(); | |
Interrupt_initVectorTable(); | |
// Enable interrupts and debug event | |
EINT; // E INT: Enable interrupt | |
ERTM; // E RTM: | |
for (;;) | |
{ | |
LED_Toggle(DEVICE_GPIO_PIN_LED1); | |
DEVICE_DELAY_US(250000); | |
LED_Toggle(DEVICE_GPIO_PIN_LED2); | |
DEVICE_DELAY_US(500000); | |
} | |
} | |
void LED_trunON(uint32_t pin) | |
{ | |
GPIO_writePin(pin, LED_ON); | |
} | |
void LED_trunOFF(uint32_t pin) | |
{ | |
GPIO_writePin(pin, LED_OFF); | |
} | |
void LED_Toggle(uint32_t pin) | |
{ | |
GPIO_togglePin(pin); | |
} | |
void setupLED(void) | |
{ | |
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); | |
} | |
// | |
// End of File | |
// |
现象是 LED1 闪烁 先亮,然后 250ms 后 LED2 亮,然后熄灭顺序也相同,
不过我是用了 gpio 反转的函数 原理和上面差不多
# 编译方式
点击这个锤子就可以进行编译
但需要注意的是,DSP 的代码默认下载搭到 RAM, 如果需要下载到 FLASH 上,则 需要点击锤子旁边的选择不同的编译模式
在 CCS 中是没有单独下载的功能,取而代之的是调试功能,点击小虫子的图标即可进入调试模式
之后点击全速运行的按钮就可以看到 LED 闪烁的现象啦
好了,这篇新建工程就这样了.
以上是我个人观点,如有不正,望大佬斧正
大道五十,天衍四十九,人遁其一!