新闻  |   论坛  |   博客  |   在线研讨会
TMS320C6748_LED例程解析
tronlong | 2014-07-07 16:56:40    阅读:2070   发布文章

       广州创龙电子基于TMS320C6748的LED程序,此程序的作用是实现GPIO输出功能,按照工程导入步骤加载GPIO_LED.out文件,然后点击程序运行按钮。

演示现象

核心板及底板 LED 循环点亮。


代码解析:

/*********************************************/
/*                                                                        */
/*              核心板及底板 LED 测试                           */
/*                                                                        */
/*              2014年4月20日                                      */
/*                                                                        */
/**********************************************/
#include "main.h"
#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 ");

// 仿真性能计数寄存器
#define EMUCNT0     *(volatile unsigned int*)0x01C111F0
#define EMUCNT1     *(volatile unsigned int*)0x01C111F4

// 中断相关寄存器
cregister unsigned int IER,IFR,CSR,ICR,ISTP,ISR;

/****************************************/
/*              全局变量                                     */
/****************************************/
/*                                                                */
/*              函数声明                                      */
/*                                                               */
/****************************************/
// 外设使能配置
void PSCInit(void);
// GPIO 管脚复用配置
void GPIOBankPinMuxSet();
// GPIO 管脚初始化
void GPIOBankPinInit();

/**************************************/
/*              主函数                                     */
/**************************************/
int main(void)
{
    // 外设使能配置
    PSCInit();

    // GPIO 管脚复用配置
    GPIOBankPinMuxSet();

    // GPIO 管脚初始化
    GPIOBankPinInit();

    unsigned int i;

    // 主循环
    for(;;)
    {
        // 核心板 LED
        for(i=0x00FFFFFF;i>0;i--);                          // 延时
        GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
        GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_HIGH);

        for(i=0x00FFFFFF;i>0;i--);                          // 延时
        GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
        GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_LOW);

        // 底板 LED
        for(i=0x00FFFFFF;i>0;i--);                          // 延时
        GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW);    // D10 灭 GPIO0[2]
        GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);   // D7  亮 GPIO0[0]

        for(i=0x00FFFFFF;i>0;i--);                          // 延时
        GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);    // D7  灭 GPIO0[0]
        GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_HIGH);   // D6  亮 GPIO0[5]

        for(i=0x00FFFFFF;i>0;i--);// 延时
        GPIOPinWrite(SOC_GPIO_0_REGS, 6, GPIO_PIN_LOW);    // D6  灭 GPIO0[5]
        GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_HIGH);   // D9  亮 GPIO0[1]

        for(i=0x00FFFFFF;i>0;i--);                          // 延时
        GPIOPinWrite(SOC_GPIO_0_REGS, 2, GPIO_PIN_LOW);    // D9  灭 GPIO0[1]
        GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_HIGH);   // D10 亮 GPIO0[2]
    }
}

/**************************************/
/*              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
    SYSCFG0Regs.PINMUX13.bit.PINMUX13_15_12 = 8;      // GPIO6[12]
    SYSCFG0Regs.PINMUX13.bit.PINMUX13_11_8 = 8;       // GPIO6[13]

    // 底板 LED
    SYSCFG0Regs.PINMUX1.bit.PINMUX1_31_28 = 8;        // D7  GPIO0[0]
    SYSCFG0Regs.PINMUX1.bit.PINMUX1_27_24 = 8;        // D9  GPIO0[1]
    SYSCFG0Regs.PINMUX1.bit.PINMUX1_23_20 = 8;        // D10 GPIO0[2]
    SYSCFG0Regs.PINMUX1.bit.PINMUX1_11_8 = 8;         // D6  GPIO0[5]
}

/****************************************/
/*              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]
    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]
}


详细代码下载地址:http://download.csdn.net/detail/gzchuanglong/7581033

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客