拷贝上一小节创建的工程文件,重新命名为Lab1_LED
连接目标板与仿真器
选择CPU1进行连接
仿真操作
在cmd文件夹下
2837xD_FLASH_lnk_cpu1.cmd(烧写所用 CMD 文件)
2837xD_RAM_lnk_cpu1.cmd(仿真所用 CMD 文件)
这两个文件一个用来烧写程序,另一个用来仿真,两者只能选择一个进行操作。选择Exclude from Build进行屏蔽操作,屏蔽时成灰色。
![](https://i-blog.csdnimg.cn/blog_migrate/39b388f9896d6c5a9a7390a5e530a93c.png)
仿真烧写如下:
![](https://i-blog.csdnimg.cn/blog_migrate/a98c6c5eca27968c6341eae65325d571.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f1ad31158f928c88e7eec0c4c85037c.png)
烧写如下:
首先屏蔽
2837xD_RAM_lnk_cpu1.cmd
右击项目文件,选择最后一个
选择cpu1
重新编译文件
硬件
总共七个LED,6个管脚GPIO0-GPIO5与其相连,6个LED共阴极相连,当管脚输出高电平时,LED被点亮,输出低电平时,LED熄灭。
首先,包含头文件
#include "F28x_Project.h"
#include "F2837xD_Ipc_drivers.h"
F28x_Project.h文件定义 F28x 项目头文件和示例包含文件
F2837xD_Ipc_drivers.h文件定义 IPC Controller
#define LED1_ON GpioDataRegs.GPASET.bit.GPIO0 = 1 //GPIO0置高
#define LED1_OFF GpioDataRegs.GPACLEAR.bit.GPIO0 = 1 //GPIO置低
#define LED2_ON GpioDataRegs.GPASET.bit.GPIO1 = 1
#define LED2_OFF GpioDataRegs.GPACLEAR.bit.GPIO1 = 1
#define LED3_ON GpioDataRegs.GPASET.bit.GPIO2 = 1
#define LED3_OFF GpioDataRegs.GPACLEAR.bit.GPIO2 = 1
#define LED4_ON GpioDataRegs.GPASET.bit.GPIO3 = 1
#define LED4_OFF GpioDataRegs.GPACLEAR.bit.GPIO3 = 1
#define LED5_ON GpioDataRegs.GPASET.bit.GPIO4 = 1
#define LED5_OFF GpioDataRegs.GPACLEAR.bit.GPIO4 = 1
#define LED6_ON GpioDataRegs.GPASET.bit.GPIO5 = 1
#define LED6_OFF GpioDataRegs.GPACLEAR.bit.GPIO5 = 1
首先讲解GPIO_DATA_REGS,
volatile struct GPIO_DATA_REGS GpioDataRegs;
此函数主要定义了GPIO端口寄存器
struct GPIO_DATA_REGS {
union GPADAT_REG GPADAT; // GPIO A Data Register (GPIO0 to 31)
union GPASET_REG GPASET; // GPIO A Data Set Register (GPIO0 to 31)
union GPACLEAR_REG GPACLEAR; // GPIO A Data Clear Register (GPIO0 to 31)
union GPATOGGLE_REG GPATOGGLE; // GPIO A Data Toggle Register (GPIO0 to 31)
union GPBDAT_REG GPBDAT; // GPIO B Data Register (GPIO32 to 63)
union GPBSET_REG GPBSET; // GPIO B Data Set Register (GPIO32 to 63)
union GPBCLEAR_REG GPBCLEAR; // GPIO B Data Clear Register (GPIO32 to 63)
union GPBTOGGLE_REG GPBTOGGLE; // GPIO B Data Toggle Register (GPIO32 to 63)
union GPCDAT_REG GPCDAT; // GPIO C Data Register (GPIO64 to 95)
union GPCSET_REG GPCSET; // GPIO C Data Set Register (GPIO64 to 95)
union GPCCLEAR_REG GPCCLEAR; // GPIO C Data Clear Register (GPIO64 to 95)
union GPCTOGGLE_REG GPCTOGGLE; // GPIO C Data Toggle Register (GPIO64 to 95)
union GPDDAT_REG GPDDAT; // GPIO D Data Register (GPIO96 to 127)
union GPDSET_REG GPDSET; // GPIO D Data Set Register (GPIO96 to 127)
union GPDCLEAR_REG GPDCLEAR; // GPIO D Data Clear Register (GPIO96 to 127)
union GPDTOGGLE_REG GPDTOGGLE; // GPIO D Data Toggle Register (GPIO96 to 127)
union GPEDAT_REG GPEDAT; // GPIO E Data Register (GPIO128 to 159)
union GPESET_REG GPESET; // GPIO E Data Set Register (GPIO128 to 159)
union GPECLEAR_REG GPECLEAR; // GPIO E Data Clear Register (GPIO128 to 159)
union GPETOGGLE_REG GPETOGGLE; // GPIO E Data Toggle Register (GPIO128 to 159)
union GPFDAT_REG GPFDAT; // GPIO F Data Register (GPIO160 to 168)
union GPFSET_REG GPFSET; // GPIO F Data Set Register (GPIO160 to 168)
union GPFCLEAR_REG GPFCLEAR; // GPIO F Data Clear Register (GPIO160 to 168)
union GPFTOGGLE_REG GPFTOGGLE; // GPIO F Data Toggle Register (GPIO160 to 168)
};
查看结构体定义,看到每个 端口有4个寄存器
其中每个寄存器设置为1启动
void GPIO_Setup() //配置GPIO的功能
{
GPIO_SetupPinMux(0, GPIO_MUX_CPU1, 0);//对引脚0设置;选择CPU1为内核,选择外设功能0
GPIO_SetupPinOptions(0, GPIO_OUTPUT, GPIO_PUSHPULL);//GPIO0,作为输出,上拉
GPIO_SetupPinMux(1, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(1, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(2, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(2, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(3, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(3, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(4, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(4, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(5, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(5, GPIO_OUTPUT, GPIO_PUSHPULL);
}
void GPIO_SetupPinMux(Uint16 pin, Uint16 cpu, Uint16 peripheral)
三个参数:
Pin:选择对应的引脚
cpu:选择cpu
peripheral:功能序号0~15 具体功能查看芯片手册
GPIO_SetupPinOptions(0, GPIO_OUTPUT, GPIO_PUSHPULL);
设置管脚输入输出模式