"); //-->
广州创龙电子基于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]
}
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。