各位好,
我已经按照BOOT SET要求,将BOOT0配置为0,BOOT1~BOOT4配置为1,BOOT5~BOOT7配置为0,为仿真器调试模式。
现在程序希望将GPIO6[7]配置为低电平输出。按照例程,进行修改,CCS并没有任何报错等异样,经测试,JTAG也已经连接到板子。可是下载后并没有任何变化,好像没有下载到DSP里。
请问这个是为什么?谢谢各位了。
我的代码如下:
#include "hw_syscfg0_C6748.h" // 系统配置模块寄存器
#include "soc_C6748.h" // DSP C6748 外设寄存器
#include "hw_pllc_C6748.h"
#include "psc.h" // 电源与睡眠控制宏及设备抽象层函数声明
#include "gpio.h" // 通用输入输出口宏及设备抽象层函数声明
// 外设使能配置
void PSCInit(void);
// GPIO 管脚复用配置
void GPIOBankPinMuxSet(void);
// GPIO 管脚初始化
void GPIOBankPinInit(void);
{
// 外设使能配置
PSCInit();
GPIOBankPinMuxSet();
GPIOBankPinInit();
GPIOPinWrite(SOC_GPIO_0_REGS, 104, GPIO_PIN_LOW);
}
{
// 使能 GPIO 模块
// 对相应外设模块的使能也可以在 BootLoader 中完成
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}
/* */
/* GPIO 管脚复用配置 */
/* */
/****************************************************************************/
void GPIOBankPinMuxSet(void)
{
HWREG(SOC_SYSCFG_0_REGS +SYSCFG0_KICK0R)=SYSCFG_KICK0R_UNLOCK;
HWREG(SOC_SYSCFG_1_REGS +SYSCFG0_KICK1R)=SYSCFG_KICK1R_UNLOCK;
savePinmuxDATA=(HWREG(SOC_UPP_0_REGS +SYSCFG0_PINMUX(14)))&
~(0x0000000Fu);
HWREG(SOC_UPP_0_REGS +SYSCFG0_PINMUX(14))=
(0x00000008u|savePinmuxDATA);
HWREG(SOC_SYSCFG_0_REGS +SYSCFG0_KICK0R)=0x12121212u;
HWREG(SOC_SYSCFG_1_REGS +SYSCFG0_KICK1R)=0x12121212u;
}
/* */
/* 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
{
HWREG(SOC_SYSCFG_1_REGS +SYSCFG0_KICK1R)=SYSCFG_KICK1R_UNLOCK;
//解除SYS寄存器的Lock
templ=HWREG(SOC_SYSCFG_0_REGS+SYSCFG0_CFGCHIP0)&
~(SYSCFG_CFGCHIP0_PLL_MASTER_LOCK );//这里只需对于PLL0进行修改
HWREG(SOC_SYSCFG_0_REGS+SYSCFG0_CFGCHIP0)=
(0x00000000|templ);
templ=HWREG( SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_PLLPWRDN);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000002|templ);//将PLL POWER 供电切断
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_CLKMODE);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000000|templ);//配置clk mode 晶振作为时钟输入
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_PLLENSRC);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000000|templ);//clear PLLENSRC
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_EXTCLKSRC);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000000|templ);//晶振作bypass时钟
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_PLLEN);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000000|templ);
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_PLLRST);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000000|templ);
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_PLLPWRDN);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000000|templ);
~(PLLC_PLLM_PLLM);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLM)=
(0x00000012|templ);//M=19
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PREDIV)&
~(PLLC_PREDIV_PREDEN);
HWREG(SOC_PLLC_0_REGS+PLLC_PREDIV)=
(0x00008000|templ);
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PREDIV)&
~(PLLC_PREDIV_RATIO);
HWREG(SOC_PLLC_0_REGS+PLLC_PREDIV)=
(0x00000000|templ);// 除法器使能
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
~(PLLC_PLLCTL_PLLRST);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000008|templ);//将PLL带出RST
templ=HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)&
(PLLC_PLLCTL_PLLEN);
HWREG(SOC_PLLC_0_REGS+PLLC_PLLCTL)=
(0x00000001|templ);
templ=HWREG(SOC_SYSCFG_0_REGS+SYSCFG0_CFGCHIP0)&
~(SYSCFG_CFGCHIP0_PLL_MASTER_LOCK );//这里只需对于PLL0进行修改
HWREG(SOC_SYSCFG_0_REGS+SYSCFG0_CFGCHIP0)=
(0x00000010|templ);
HWREG(SOC_SYSCFG_0_REGS +SYSCFG0_KICK0R)=0x12121212u;
HWREG(SOC_SYSCFG_1_REGS +SYSCFG0_KICK1R)=0x12121212u;
}



