OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12902|回复: 5

关于使用JTAG V8调试,有图

[复制链接]

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2011-10-4 23:30:00 | 显示全部楼层 |阅读模式

 刚在原子哥那买的JTAG V8,原子哥人好,还送了我两个红外接收头。。在此表示感谢。。好了,进入正题,也就是我的疑问,,^_^^_^.在我调试按键输入时(注意:事先我已经改变I/O口使得与JTAG调试不冲突),当我单步调试时,发现程序只能识别到一次硬件按键的输入,不知为什么?难道只能识别一次吗,如下图:
 while(1)
 {
 t=KEY_Scan(); // 得到键值
 if(t)
 {
  switch(t)
  {
   case 1ED1=!LED1;break;
   case 2ED2=!LED2;break;
   case 3ED1=!LED1;LED2=!LED2;break; 
  }
 }    
 } 
}
单步执行时,每执行到 t=KEY_Scan(); 之前我就按下按键,比如key_0,则按好多次才能识别到硬件的一次输入,这是为什么呢?
下图是某次被JTAG识到t=0x01.因为我按下了key_0;



大多数按按键的时候都不能被JTAG识别到,如下图右下角。。求解???


 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-5 00:34:18 | 显示全部楼层
回复【楼主位】螃蟹爱虫:
---------------------------------
问题出在你的按键程序吧.
KEY_Scan.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-10-5 09:25:45 | 显示全部楼层
原子哥:请看KEY_Scan()函数如下:因为默认是开启的,在函数里我已经取消禁用SWD,JTAG,,,所以应该此函数不会影响吧?
u8 KEY_Scan(void)
{  
static u8 key_up=1;//°??ü°?????±ê??
// JTAG_Set(JTAG_SWD_DISABLE); // ??±?JTAG&SWD????PA13,PA15??JTAG&SWD?????????ù??????±???????????PE?????ù????????±?
if(key_up&&(KEY0==0||KEY1==0||KEY2==0))
{
delay_ms(10);//?????? 
key_up=0;
if(KEY0==0)
{
// JTAG_Set(SWD_ENABLE);
return 1;
}
else if(KEY1==0)
{
// JTAG_Set(SWD_ENABLE);
return 2;
}
else if(KEY2==0)
{
// JTAG_Set(SWD_ENABLE);
return 3;
}
}
else if(KEY0==1&&KEY1==1&&KEY2==1)key_up=1;      
// JTAG_Set(SWD_ENABLE);
return 0;// ??°??ü°???
}
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-10-5 09:26:46 | 显示全部楼层
原子哥:请看KEY_Scan()函数如下:因为默认是开启的,在函数里我已经取消禁用SWD,JTAG,,,所以应该此函数不会影响吧? 
u8 KEY_Scan(void) 
{   
static u8 key_up=1;//°??ü°?????±ê?? 
// JTAG_Set(JTAG_SWD_DISABLE); //
KEY0==0||KEY1==0||KEY2==0)) 

delay_ms(10);//??????  
key_up=0; 
if(KEY0==0) 

// JTAG_Set(SWD_ENABLE); 
return 1; 

else if(KEY1==0) 

// JTAG_Set(SWD_ENABLE); 
return 2; 

else if(KEY2==0) 

// JTAG_Set(SWD_ENABLE); 
return 3; 


else if(KEY0==1&&KEY1==1&&KEY2==1)key_up=1;       
// JTAG_Set(SWD_ENABLE); 
return 0;// } 

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-5 10:08:10 | 显示全部楼层
回复【4楼】螃蟹爱虫:
---------------------------------
你的keyscan应该没问题,就看你IO初始化对了没有?
还有你jtag的仿真,可能使用有问题.如果jtag干预了程序的运行,你的结果就不奇怪了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
 楼主| 发表于 2011-10-5 22:42:16 | 显示全部楼层
已明白,是扫描函数的key_up引起的问题。多谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 13:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表