在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4232|回复: 4

[求助] 请教edk的一些问题

[复制链接]
发表于 2010-7-28 22:01:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近在做“官方的6个实验”,在实验5中遇到了问题。
硬件添加了GPIO(4bit),UART,中断,定时器,遇到了一些问题,向大家请教一下。
1.下面这段程序进不去中断,请高手们看看。#include "xparameters.h"
#include "xuartlite.h"
#include "stdio.h"
#include "xutil.h"
#include "xbasic_types.h"
#include "xgpio.h"
#include "xgpio_l.h"
#include "xintc_l.h"
#include "xstatus.h"
#include "xtmrctr_l.h"
#define  LED_DELAY 100
#define  LED_CHANNEL 1
XGpio GpioOutPut;
Xuint16 count =1;
Xuint16 one_second_flag =0;
void timer_int_handler(void *baseaddr_p)
{
/*Add variable declarations here*/
unsigned int csr;
/*Read timer 0 CSR to see if it raised the interrupt*/
csr=XTmrCtr_mGetControlStatusReg(XPAR_DELAY_DEVICE_ID,0);
/*if the interrupt occured, then counter++*/
if (csr & XTC_CSR_INT_OCCURED_MASK)
count++;
one_second_flag =1;
//Display the count on the LEDs and print some statement
XGpio_mSetDataReg(XPAR_GENERIC_GPIO_BASEADDR,LED_CHANNEL,count);
xil_printf("count = %x\n\r",count);
// Clear the timer interrupt
XTmrCtr_mSetControlStatusReg(XPAR_DELAY_BASEADDR,0,csr);
}

int main(void)
{
  xil_printf("-- Entering main() --\r\n");
  Xuint16 count_mod_3 =0;
  
  /* initialize and set the direction of the GPIO  connected to */
  XGpio_Initialize(&GpioOutPut,XPAR_GENERIC_GPIO_DEVICE_ID);
  XGpio_SetDataDirection(&GpioOutPut, 1, 0x0);
  /*start the interrupt controller */
  XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR);
  XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR,0x1);
  xil_printf("The value of count =%d\r\n",count);
  while(1)
{   

   
  if (one_second_flag)
  {
   count_mod_3 = count %3;
   if (count_mod_3= 0)
    xil_printf("Interrupt taken at %d seconds \n\r",count);
   one_second_flag=0;
   xil_printf(".");
  }
}
print("-- Exiting main() --\r\n");
}
2.由于进不去中断,我很怀疑定时器是否工作。所以我用了以下的语句:
unsigned int csr,TCSR,TLR,TCR;
csr=XTmrCtr_mGetControlStatusReg(XPAR_DELAY_DEVICE_ID,0);
TCSR=XTimerCtr_mReadReg(XPAR_XPS_INTC_0_BASEADDR,0,XTC_TCSR_OFFSET);
TLR=XTimerCtr_mReadReg(XPAR_XPS_INTC_0_BASEADDR,0,XTC_TLR_OFFSET);
TCR=XTimerCtr_mReadReg(XPAR_XPS_INTC_0_BASEADDR,0,XTC_TCR_OFFSET);
结果用debug设置断点,得到数据:csr=0xb8080050;TCSR=0x0;TCR=0x1;TLR=0x0;
我有点疑问:csr和TCSR得到的不应该是同一个值么?这两个语句观察的不是同一个寄存器么?
3.我用debug的时候,点击Resume,然后点击suspend,出现如下情况(Exceptions occurred attempting to suspend):
suspend_failed.bmp
而设置断点就没有问题。怎么解决?
4.看网上的教材,能看到memory,而在我的Xilinx ise suit 11.1中只能看到register,能看memory么?
 楼主| 发表于 2010-7-31 17:19:08 | 显示全部楼层
老鸟们来指点一下啊!
发表于 2010-8-3 09:48:55 | 显示全部楼层
帮顶,呵呵
发表于 2010-10-6 16:51:57 | 显示全部楼层
菜鸟,,,学习中
发表于 2012-11-14 20:13:47 | 显示全部楼层
回复 1# qd0090

请问楼主这个问题解决了吗?我最近也刚好遇到这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-11 09:05 , Processed in 0.289082 second(s), 11 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表