1. 为什么使用StarterWare库
功能:帮助我们编写C6748非操作系统的程序。把基本的寄存器操作封装成ATI函数。
2.?StarterWare安装
去TI官网模拟 | 嵌入式处理 | 半导体公司 | 德州仪器 TI.com.cn搜索StarterWare。
?
?3. 点亮LED
创建一个工程。右击工程名,选择properyies。
#include "TL6748.h" // 创龙 DSP6748 开发板相关声明
#include "hw_types.h" // 宏命令
#include "hw_syscfg0_C6748.h" // 系统配置模块寄存器
#include "soc_C6748.h" // DSP C6748 外设寄存器
#include "psc.h" // 电源与睡眠控制宏及设备抽象层函数声明
#include "gpio.h" // 通用输入输出口宏及设备抽象层函数声明
/****************************************************************************/
/* */
/* 宏定义 */
/* */
/****************************************************************************/
// 软件断点
#define SW_BREAKPOINT asm(" SWBP 0 ");
/****************************************************************************/
/* */
/* 全局变量 */
/* */
/****************************************************************************/
#pragma DATA_ALIGN(pulse, 2);
unsigned int pulse[128];
/****************************************************************************/
/* */
/* 函数声明 */
/* */
/****************************************************************************/
// 外设使能配置
void PSCInit(void);
// GPIO 管脚复用配置
void GPIOBankPinMuxSet();
// GPIO 管脚初始化
void GPIOBankPinInit();
// 延时
void Delay(unsigned int n);
/****************************************************************************/
/* */
/* 主函数 */
/* */
/****************************************************************************/
int main(void)
{
// 外设使能配置
PSCInit();
int i=0;
for(i=0;i<128;i++)
pulse[i]=0;
i=0;
// GPIO 管脚复用配置
GPIOBankPinMuxSet();
// GPIO 管脚初始化
GPIOBankPinInit();
// 主循环
for(;;)
{
// 延时
Delay(0x00FFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW); // D10 灭 GPIO0[2]
GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH); // D7 亮 GPIO0[0]
pulse[i]=255;
// 延时
Delay(0x00FFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW); // D7 灭 GPIO0[0]
GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_HIGH); // D6 亮 GPIO0[5]
pulse[i+1]=0;
// 延时
Delay(0x00FFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_LOW); // D6 灭 GPIO0[5]
GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH); // D9 亮 GPIO0[1]
pulse[i+1]=0;
// 延时
Delay(0x00FFFFFF);
GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_LOW); // D9 灭 GPIO0[1]
GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH); // D10 亮 GPIO0[2]
pulse[i+1]=255;
i=i+2;
if(i>0x7f)
i=0;
}
}
/****************************************************************************/
/* */
/* PSC 初始化 */
/* */
/****************************************************************************/
void PSCInit(void)
{
// 使能 GPIO 模块
// 对相应外设模块的使能也可以在 BootLoader 中完成
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}
/****************************************************************************/
/* */
/* GPIO 管脚复用配置 */
/* */
/****************************************************************************/
void GPIOBankPinMuxSet(void)
{
// 配置相应的 GPIO 口功能为普通输入输出口
// 底板 LED
GPIOBank0Pin0PinMuxSetup();
GPIOBank0Pin1PinMuxSetup();
GPIOBank0Pin2PinMuxSetup();
GPIOBank0Pin5PinMuxSetup();
}
/****************************************************************************/
/* */
/* GPIO 管脚初始化 */
/* */
/****************************************************************************/
void GPIOBankPinInit(void)
{
// 配置 LED 对应管脚为输出管脚
// OMAPL138 及 DSP C6748 共有 144 个 GPIO
// 以下为各组 GPIO BANK 起始管脚对应值
// 范围 1-144
// GPIO0[0] 1
// GPIO1[0] 17
// GPIO2[0] 33
// GPIO3[0] 49
// GPIO4[0] 65
// GPIO5[0] 81
// GPIO6[0] 97
// GPIO7[0] 113
// GPIO8[0] 129
// 核心板 LED
GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); // GPIO6[12] 配置当前io口的输入输出方向
GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); // GPIO6[13] 第一个参数是基址,
// 底板 LED
GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT); // D7 GPIO0[0] 第二个是序号
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_OUTPUT); // D9 GPIO0[1] 第三个是引脚是输入还是输出
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_OUTPUT); // D10 GPIO0[2]
GPIODirModeSet(SOC_GPIO_0_REGS, 6, GPIO_DIR_OUTPUT); // D6 GPIO0[5]
}
/****************************************************************************/
/* */
/* 延时 */
/* */
/****************************************************************************/
void Delay(unsigned int n)
{
unsigned int i;
for(i=n;i>0;i--);
}
?
|