X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
DSP 与 ARM 处理器
[资料分享] DSP实现流水灯样式的源码
fish001
2018-9-22 20:50
楼主
/*
* main.c
*
* Created on: 2018年8月18日
* Author: LYJCD
*/
//###########################################################################
//
// FILE: Example1_2833xGpioLED.c
//
// TITLE: 用DSP点亮发光二极管实验
//
//
// 根据在RAM中调试的需要,这个项目配置成"boot to SARAM".2833x引导模式
// 表如下显示. 常用的还有"boot to Flash"模式,当程序在RAM调试完善后就
// 可以将代码烧进Flash中并使用"boot to Flash"引导模式.
//
// $Boot_Table:
//
// GPIO87 GPIO86 GPIO85 GPIO84
// XA15 XA14 XA13 XA12
// PU PU PU PU
// ==========================================
// 1 1 1 1 Jump to Flash
// 1 1 1 0 SCI-A boot
// 1 1 0 1 SPI-A boot
// 1 1 0 0 I2C-A boot
// 1 0 1 1 eCAN-A boot
// 1 0 1 0 McBSP-A boot
// 1 0 0 1 Jump to XINTF x16
// 1 0 0 0 Jump to XINTF x32
// 0 1 1 1 Jump to OTP
// 0 1 1 0 Parallel GPIO I/O boot
// 0 1 0 1 Parallel XINTF boot
// 0 1 0 0 Jump to SARAM <- "boot to SARAM"
// 0 0 1 1 Branch to check boot mode
// 0 0 1 0 Boot to flash, bypass ADC cal
// 0 0 0 1 Boot to SARAM, bypass ADC cal
// 0 0 0 0 Boot to SCI-A, bypass ADC cal
// Boot_Table_End$
//
// 功能描述:
//
// 程序编译下载成功后,运行程序时LED灯组会一直闪烁
//
//
//###########################################################################
// 释放日期: 2013.11.11
//###########################################################################
#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件
#define D8 GpioCtrlRegs.GPBDAT.bit.GPIO60 //D8代表GPIO60
#define D9 GpioCtrlRegs.GPBDAT.bit.GPIO61 //D9代表GPIO61
#define D10 GpioCtrlRegs.GPCDAT.bit.GPIO64 //D10代表GPIO64
#define D11 GpioCtrlRegs.GPCDAT.bit.GPIO65 //D11代表GPIO65
#define D12 GpioCtrlRegs.GPCDAT.bit.GPIO66 //D12代表GPIO66
#define D13 GpioCtrlRegs.GPCBAT.bit.GPIO67 //D13代表GPIO67
#define D14 GpioCtrlRegs.GPCDAT.bit.GPIO68 //D14代表GPIO68
// 使用前,声明本文件中的相关函数;
void delay_loop(void);
void Gpio_select(void);
void main(void)
{
// 步骤 1. 初始化系统控制:
// 设置PLL, WatchDog, 使能外设时钟
// 下面这个函数可以从DSP2833x_SysCtrl.c文件中找到..
InitSysCtrl();
// 步骤 2. 初始化通用输入输出多路复用器GPIO:
// 这个函数在DSP2833x_Gpio.c源文件中被定义了
// 这个函数使GPIO控制类寄存器初始化到默认状态
// InitGpio(); // 本例不用此子函数
// 本例使用下面的GPIO配置
Gpio_select();
// 步骤 3. 清除所有中断初始化中断向量表:
// 禁止CPU全局中断
DINT;
// 初始化PIE控制寄存器到他们的默认状态.
// 这个默认状态就是禁止PIE中断及清除所有PIE中断标志
// 这个函数放在DSP2833x_PieCtrl.c源文件里
InitPieCtrl();
// 禁止CPU中断和清除所有CPU中断标志
IER = 0x0000;
IFR = 0x0000;
//初始化PIE中断向量表,并使其指向中断服务子程序(ISR)
// 这些中断服务子程序被放在了DSP280x_DefaultIsr.c源文件中
// 这个函数放在了DSP2833x_PieVect.c源文件里面.
InitPieVectTable();
// 步骤 4. 初始化片内外设:
// 这个函数可以在DSP280x_CpuTimers.c源文件中找到
// InitCpuTimers(); // 这个例子仅初始化了Cpu定时器
// 步骤 5. 用户特定的代码
for(;;)
{
//*******让灯先从D8到D14逐一亮******//
GpioDataRegs.GPBDAT.bit.GPIO60=0;
delay_loop();
GpioDataRegs.GPBSET.bit.GPIO60=1;
delay_loop();
GpioDataRegs.GPBDAT.bit.GPIO61=0;
delay_loop();
GpioDataRegs.GPBSET.bit.GPIO61=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO64=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO64=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO65=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO65=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO66=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO66=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO67=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO67=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO68=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO68=1;
/******让灯从D14到D8返回*****///
GpioDataRegs.GPCDAT.bit.GPIO68=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO68=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO67=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO67=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO66=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO66=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO65=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO65=1;
delay_loop();
GpioDataRegs.GPCDAT.bit.GPIO64=0;
delay_loop();
GpioDataRegs.GPCSET.bit.GPIO64=1;
delay_loop();
GpioDataRegs.GPBDAT.bit.GPIO61=0;
delay_loop();
GpioDataRegs.GPBSET.bit.GPIO61=1;
delay_loop();
GpioDataRegs.GPBDAT.bit.GPIO60=0;
delay_loop();
GpioDataRegs.GPBSET.bit.GPIO60=1;
delay_loop();
/******GPCSET(设置寄存器)是GpioData(数据寄存器)下的一个小寄存器
GpioDataRegs.GPBDAT.bit.GPIO60=0;
delay_loop();
GpioDataRegs.GPBSET.bit.GPIO60=1; 这两个数是要配套使用不然起不到流水灯流水作用,
delay_loop();**/
/* D8=0;
D9=1;
D10=0;
D11=1;
D12=0;
D13=1;
D14=0;*/
}
}
//延迟子函数
void delay_loop()
{
Uint32 i;
Uint32 j;
for(i=0;i<32;i++)
for (j = 0; j < 100000; j++) {}
}
//GPIO初始化函数
void Gpio_select(void)
{
EALLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO60=0; // GPIO0 = GPIO0 通用的I/0 GPIO48到GPIO口63是要选择GPIOB选择寄存器2
GpioCtrlRegs.GPBDIR.bit.GPIO60=1; // GPIO0配置为输出口
GpioCtrlRegs.GPBMUX2.bit.GPIO61=0; // GPIO0 = GPIO0 通用的I/0
GpioCtrlRegs.GPBDIR.bit.GPIO61=1; // GPIO0配置为输出口
GpioCtrlRegs.GPCMUX1.bit.GPIO64=0; // GPIO0 = GPIO0 通用的I/0 GPIO64到GPIO79是要选择GPIOC选择寄存器1
GpioCtrlRegs.GPCDIR.bit.GPIO64=1; // GPIO0配置为输出口
GpioCtrlRegs.GPCMUX1.bit.GPIO65=0; // GPIO0 = GPIO0 通用的I/0
GpioCtrlRegs.GPCDIR.bit.GPIO65=1; // GPIO0配置为输出口
GpioCtrlRegs.GPCMUX1.bit.GPIO66=0; // GPIO0 = GPIO0 通用的I/0
GpioCtrlRegs.GPCDIR.bit.GPIO66=1; // GPIO0配置为输出口
GpioCtrlRegs.GPCMUX1.bit.GPIO67=0; // GPIO0 = GPIO0 通用的I/0
GpioCtrlRegs.GPCDIR.bit.GPIO67=1; // GPIO0配置为输出口
GpioCtrlRegs.GPCMUX1.bit.GPIO68=0; // GPIO0 = GPIO0 通用的I/0
GpioCtrlRegs.GPCDIR.bit.GPIO68=1; // GPIO0配置为输出口
EDIS;
}
//===========================================================================
// No more.
//===========================================================================
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
有奖直播报名中!抢占工业4.1先机 文晔科技日等你来!
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
罗姆有奖直播 | 重点解析双极型晶体管的实用选型方法和使用方法
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
免费下载 | 安森美电动汽车充电白皮书,看碳化硅如何缓解“里程焦虑”!
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
随便看看
【问题反馈】安路TangDynasty ChipWatcher与主IDE不同步的问题
吃内存的问题!
CCS 7.4.0导入PDK_c667x_2_0_9的例程
【跟TI学电源】----TI的 热插拔功率管理器件TPS2491DGSR 介绍应用
wince(VS2005,c#) 控件透明怎么实现
求TC35外围电路连接图及收发短信源代码 !!
怎样对台达PLC程序修改及调试?
被90后彻底雷焦。。。。。
“AVR之父”带你回顾AVR的“始创”经历和技术总结
攒分,请无视
基于GD32F350的桌面小助手——其二
想买块FPGA板
深耕微波射频,做单板的这11年
操作系统正常运行时还修改它在硬盘上的数据吗
畅想Led技术进步空间有多大
工业现场IGBT动态开关时间测试方法
ASCII码对照
请各位多多指教!
EEWORLD要出台历了,你出创意 我来做!
刚入行的电源工程师,在迷茫中一定要继续前行!
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复