原理图解析:
LED原理图,D1和D2连接PWM7和PWM8
底板J2接插件,PWM7、PWM8连接PWM4A、PWM4B
核心板J5接插件PWM4A、PWM4B
核心板,PWM4A、PWM4B连接GPIO6、GPIO7
GPIO原理解析:
在本设计中,只需要GPIO控制LED灯的亮灭。在DSP中控制一个GPIO用到的寄存器有GPACTRL、GPAQSEL、GPADIR、GPAMUX和GPIOAPUD共5个寄存器。本设计中没用到中断,所以GPIO的中断寄存器不做介绍。
GPACTRL:指定输入引脚的采样周期(与本设计无关);
GPAQSEL:配置采样数,(滤波数),当干扰信号持续采样周期小于该寄存器设置的采样周期时,干扰信号被滤除。
GPADIR:设置GPIO的输入输出方向。本设计设置为输出。
GPAMUX:GPIO的复用开关,GPIO可以当作通用数字量IO或者外设引脚。
GPIOPUD:引脚上拉选项。
本设计中将IO设置成通用数字量输出IO,然后控制IO的高低电平,最终显示为LED的亮灭。
程序解析:
#include "DSP2833x_Device.h" // DSP2833x
#include "DSP2833x_Examples.h" // DSP2833x
#define LED1 GpioDataRegs.GPADAT.bit.GPIO6
#define LED2 GpioDataRegs.GPADAT.bit.GPIO7
void configtestled(void);
void main(void)
{
InitSysCtrl();//系统初始化,主要包括时钟,看门狗和外设时钟
DINT;//关闭中断
InitPieCtrl();//初始化PIE中断,清除中断标志
IER = 0x0000;//失能CPU中断和中断标志
IFR = 0x0000;
InitPieVectTable();//初始化PIE的向量表
configtestled();//配置IO
LED1=1;
DELAY_US(10);
LED2=0;
DELAY_US(10);、
//控制LED交替显示
while(1){
LED1=~LED1;
LED2=~LED2;
DELAY_US(1000000);
LED1=~LED1;
LED2=~LED2;
DELAY_US(1000000);
}
}
void configtestled(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //GPIO为通用数字IO
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; //设置成输出模式
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
EDIS;
}
最终效果:
原理图解析:
LED原理图,D1和D2连接PWM7和PWM8
底板J2接插件,PWM7、PWM8连接PWM4A、PWM4B
核心板J5接插件PWM4A、PWM4B
核心板,PWM4A、PWM4B连接GPIO6、GPIO7
GPIO原理解析:
在本设计中,只需要GPIO控制LED灯的亮灭。在DSP中控制一个GPIO用到的寄存器有GPACTRL、GPAQSEL、GPADIR、GPAMUX和GPIOAPUD共5个寄存器。本设计中没用到中断,所以GPIO的中断寄存器不做介绍。
GPACTRL:指定输入引脚的采样周期(与本设计无关);
GPAQSEL:配置采样数,(滤波数),当干扰信号持续采样周期小于该寄存器设置的采样周期时,干扰信号被滤除。
GPADIR:设置GPIO的输入输出方向。本设计设置为输出。
GPAMUX:GPIO的复用开关,GPIO可以当作通用数字量IO或者外设引脚。
GPIOPUD:引脚上拉选项。
本设计中将IO设置成通用数字量输出IO,然后控制IO的高低电平,最终显示为LED的亮灭。
程序解析:
#include "DSP2833x_Device.h" // DSP2833x
#include "DSP2833x_Examples.h" // DSP2833x
#define LED1 GpioDataRegs.GPADAT.bit.GPIO6
#define LED2 GpioDataRegs.GPADAT.bit.GPIO7
void configtestled(void);
void main(void)
{
InitSysCtrl();//系统初始化,主要包括时钟,看门狗和外设时钟
DINT;//关闭中断
InitPieCtrl();//初始化PIE中断,清除中断标志
IER = 0x0000;//失能CPU中断和中断标志
IFR = 0x0000;
InitPieVectTable();//初始化PIE的向量表
configtestled();//配置IO
LED1=1;
DELAY_US(10);
LED2=0;
DELAY_US(10);、
//控制LED交替显示
while(1){
LED1=~LED1;
LED2=~LED2;
DELAY_US(1000000);
LED1=~LED1;
LED2=~LED2;
DELAY_US(1000000);
}
}
void configtestled(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //GPIO为通用数字IO
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; //设置成输出模式
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
EDIS;
}
最终效果: