【DM642学习笔记二】dsp基础实验:发光二级管的显示 led.c

1,OSDFPGA配置一个专用的8位寄存器控制指示灯亮灭,访问地址为90080017h,由电路图可知低电平点亮。   

 

2,程序运行时,可直接editmemory。即修改90080017h地址的值(可在Edit-memory-edit对话框中修改,也可在View memory中直接点击修改),当前指示灯亮灭情况随之改变。程序仍继续运行。

3,BSL的结构及其使用

4,DSP/BIOS程序设计环境

程序如下:

#include "c6x.h"
#define PROGXOR 1
#define LEDCTLR (*((unsignedchar*)(0x90080017))) 
voidInitEMIF();    // 初始化EMIF接口
void Delay(unsigned intnDelay);   // 软件延时子程序


main()
{
      int i,j;
      unsigned int uWork;
      while ( 1 )
      {
             LEDCTLR=0;       // 点亮所有8个指示灯
              Delay(1024);    //等待片刻
             LEDCTLR=0x0ff;   // 关闭所有8个指示灯
             Delay(1024);

#ifndef PROGXOR

             uWork=1;             // 以下逐个点亮指示灯
             for ( i=0;i<8;i++ )
            {
                    LEDCTLR&=((~uWork)&0x0ff);
                    uWork<<=1;
                    Delay(1024);
             }
             uWork=1;             // 以下逐个关闭指示灯
             for ( i=0;i<8;i++ )?
             {
                    LEDCTLR|=uWork;
                    uWork<<=1;
                    Delay(1024);
             }
#else
             for ( j=0;j<2;j++ )
             {
                    uWork=1;             // 以下逐个关闭或点亮指示灯
                    for ( i=0;i<8;i++ )
                    {
                           LEDCTLR^=uWork;
                           uWork<<=1;
                           Delay(1024);
                    }
             }
#endif
      }
}

// 软件延时子程序
void Delay(unsigned intnDelay)
{
      unsigned int i,j,k=0;
      for ( i=0;i<nDelay;i++ )
             for ( j=0;j<6144;j++ )
                    k++;
} 

// 初始化EMIF接口
void InitEMIF()
{
#defineEMIFA_GCTL      0x01800000
#defineEMIFA_CE1       0x01800004
#defineEMIFA_CE0       0x01800008
#defineEMIFA_CE2       0x01800010
#defineEMIFA_CE3       0x01800014
#defineEMIFA_SDRAMCTL  0x01800018
#defineEMIFA_SDRAMTIM  0x0180001c
#defineEMIFA_SDRAMEXT  0x01800020
#defineEMIFA_CE1SECCTL  0x01800044
#defineEMIFA_CE0SECCTL  0x01800048
#defineEMIFA_CE2SECCTL  0x01800050
#defineEMIFA_CE3SECCTL  0x01800054

   *(int*)EMIFA_GCTL    = 0x00052078;
   *(int*)EMIFA_CE0     = 0xffffffd3; 
   *(int*)EMIFA_CE1     = 0x73a28e01; 
   *(int*)EMIFA_CE2     = 0x22a28a22; 
   *(int*)EMIFA_CE3     = 0x22a28a42; 
   *(int *)EMIFA_SDRAMCTL = 0x57115000; 
   *(int *)EMIFA_SDRAMTIM = 0x0000081b; 
   *(int *)EMIFA_SDRAMEXT = 0x001faf4d; 
   *(int *)EMIFA_CE0SECCTL= 0x00000002; 
   *(int *)EMIFA_CE1SECCTL= 0x00000002; 
   *(int *)EMIFA_CE2SECCTL= 0x00000002; 
   *(int *)EMIFA_CE3SECCTL= 0x00000073;       

}

 

 

 

转载于:https://www.cnblogs.com/eaglediao/p/7136549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值