LEON3点亮LEDs-20230511

  1. 使用NexysVideo板子为例;

  2. 生成config.vhd,打开后,添加如下
    – GPIO port
    constant CFG_GRGPIO_ENABLE : integer := 1;
    constant CFG_GRGPIO_IMASK : integer := 16#0000#;
    constant CFG_GRGPIO_WIDTH : integer := (3);
    在这里插入图片描述

  3. 打开leon3mp.vhd修改如下位置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    修改xdc约束文件,如下图在这里插入图片描述

  4. 接下来,综合实现生成bit文件,下载进去。

  5. 使用GRMON看看有没有GRGPIO。
    在这里插入图片描述
    grmon -uart com4

  6. 输入info sys,查看GPIO地址;
    在这里插入图片描述
    得到起始地址80000a00;

  7. 输入如下代码,得到main.c

/*

  • main.c
  • Created on: 2010-3-27
  •  Author: surpassal
    

/
// LED
#define LEDG_BASE 0x80000a00
// REG LEDG
#define LEDG_DATA_IN (
(unsigned int volatile )(LEDG_BASE ))
#define LEDG_DATA_OUT (
(unsigned int volatile )(LEDG_BASE + 4 ))
#define LEDG_DIR (
(unsigned int volatile )(LEDG_BASE + 8 ))
#define LEDG_INT_MASK (
(unsigned int volatile )(LEDG_BASE + 0xC ))
#define LEDG_INT_POL (
(unsigned int volatile )(LEDG_BASE + 0x10 ))
#define LEDG_INT_EDGE (
(unsigned int volatile )(LEDG_BASE + 0x14 ))
#define LEDG_BYPASS (
(unsigned int volatile *)(LEDG_BASE + 0x18 ))

void delay1s(void);
int main(void)
{
unsigned char i=0;
unsigned char led1=0;
printf(“This is a YHQ GPIO IP core Test!”);
LEDG_DIR=0xffffffff;//output mode
led1=0xf0;
while(1)
{
for(i=0;i<16;i++)
{
LEDG_DATA_OUT=led1;
delay1s();
led1=~led1;// 取反
}
}
return 1;
}

void delay1s(void)
{
int i,j;
for(i=0;i<1000;i++)
for(j=0;j<500;j++);
}

  1. 编译刚刚的文件:
    c:\Opt\testvideogpio>sparc-gaisler-elf-gcc.exe main2.c -o main2.elf
    在这里插入图片描述
    不行的话,需要设置环境变量;
  2. 在grmon里面load进来,并run。
    在这里插入图片描述
  3. 查看板上结果,三个LED开始闪烁。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值