標題:
DSP實現(xiàn)流水燈樣式的源碼
[打印本頁]
作者:
super.飛揚
時間:
2018-8-21 16:29
標題:
DSP實現(xiàn)流水燈樣式的源碼
給需要的朋友 這也是第一次發(fā)帖 望支持!
0.png
(12.29 KB, 下載次數(shù): 117)
下載附件
2018-8-21 17:17 上傳
單片機源程序如下:
/*
* main.c
*
* Created on: 2018年8月18日
* Author: LYJCD
*/
//###########################################################################
//
// FILE: Example1_2833xGpioLED.c
//
// TITLE: 用DSP點亮發(fā)光二極管實驗
//
//
// 根據(jù)在RAM中調(diào)試的需要,這個項目配置成"boot to SARAM".2833x引導模式
// 表如下顯示. 常用的還有"boot to Flash"模式,當程序在RAM調(diào)試完善后就
// 可以將代碼燒進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
// 使用前,聲明本文件中的相關函數(shù);
void delay_loop(void);
void Gpio_select(void);
void main(void)
{
// 步驟 1. 初始化系統(tǒng)控制:
// 設置PLL, WatchDog, 使能外設時鐘
// 下面這個函數(shù)可以從DSP2833x_SysCtrl.c文件中找到..
InitSysCtrl();
// 步驟 2. 初始化通用輸入輸出多路復用器GPIO:
// 這個函數(shù)在DSP2833x_Gpio.c源文件中被定義了
// 這個函數(shù)使GPIO控制類寄存器初始化到默認狀態(tài)
// InitGpio(); // 本例不用此子函數(shù)
// 本例使用下面的GPIO配置
Gpio_select();
// 步驟 3. 清除所有中斷初始化中斷向量表:
// 禁止CPU全局中斷
DINT;
// 初始化PIE控制寄存器到他們的默認狀態(tài).
// 這個默認狀態(tài)就是禁止PIE中斷及清除所有PIE中斷標志
// 這個函數(shù)放在DSP2833x_PieCtrl.c源文件里
InitPieCtrl();
// 禁止CPU中斷和清除所有CPU中斷標志
IER = 0x0000;
IFR = 0x0000;
//初始化PIE中斷向量表,并使其指向中斷服務子程序(ISR)
// 這些中斷服務子程序被放在了DSP280x_DefaultIsr.c源文件中
// 這個函數(shù)放在了DSP2833x_PieVect.c源文件里面.
InitPieVectTable();
// 步驟 4. 初始化片內(nèi)外設:
// 這個函數(shù)可以在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(數(shù)據(jù)寄存器)下的一個小寄存器
GpioDataRegs.GPBDAT.bit.GPIO60=0;
delay_loop();
GpioDataRegs.GPBSET.bit.GPIO60=1; 這兩個數(shù)是要配套使用不然起不到流水燈流水作用,
delay_loop();**/
/* D8=0;
D9=1;
D10=0;
D11=1;
D12=0;
D13=1;
D14=0;*/
}
}
//延遲子函數(shù)
void delay_loop()
{
Uint32 i;
Uint32 j;
for(i=0;i<32;i++)
for (j = 0; j < 100000; j++) {}
}
//GPIO初始化函數(shù)
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.
//===========================================================================
復制代碼
所有資料51hei提供下載:
newprojectLED1.rar
(197.78 KB, 下載次數(shù): 26)
2018-8-21 16:28 上傳
點擊文件名下載附件
GPIO流水燈
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1