首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

高手帮忙,莫名其妙的问题,急!

高手帮忙,莫名其妙的问题,急!

各位大侠版主:


    我用的是s12dg128b的片子,给PORTB4,5口分别接入高低电平,程序如下:


#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */


unsigned int cross,crossTime;
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


#pragma CODE_SEG DEFAULT
void PortInit(void){
  DDRB=0xcf;
  PORTB_BIT0=1;
  PORTB_BIT1=1;
  PORTB_BIT2=1;
  PORTB_BIT3=1; 
}


void Ten_Cross(void) {
if(PORTB_BIT4==0 && PORTB_BIT5==0) {
 cross=0;
}
if(PORTB_BIT4==1 && PORTB_BIT5==0) {
 cross=1;
}
if(PORTB_BIT4==0 && PORTB_BIT5==1) {
 cross=2;
}
if(PORTB_BIT4==1 && PORTB_BIT5==1) {
 cross=3;
}
 crossTime=2*cross+1;
 }


void main(void) {
  PortInit();
  EnableInterrupts;
  for(;;) {
   Ten_Cross();
   if(cross==0) {
     PORTB_BIT0=0;  //LED0亮
   } else if(cross==1) {
     PORTB_BIT1=0;  //LED1亮
   } else if(cross==2) {
     PORTB_BIT2=0;  //LED2亮
   } else if(cross==3) {
     PORTB_BIT3=0;  //LED3亮
   }
   /* wait forever */
 }
}


片子接上BDM时程序运行无误,LED1亮。但是拔掉BDM后运行时却是LED3亮,按一下复位键就又能正常运行了,不知道这是什么原因!


  急切盼望各位大侠伸出援助之手!

只要复位后能够正常运行即可以了。
插拔BDM的瞬间,CPU的运行状态是非正常的。
hello!
PORTB输入端有没有上拉?
海纳百川  有容乃大

你彻底拔掉BDM了吗?

由于BDM有一个BUG,如果不彻底从班子上拔掉BDM(我是说拔掉BDM和你的板子的连接)。当然你的情况不一定了。试试看吧。[em07]
-
BDM有bug?不知道指的什么
BDM头连着的时候是背景调试模式,BDM拔掉是用户模式
在BDM运行时,拔掉BDM头,自然不能立刻转成用户模式,需要reset

斑竹说的我理解,称为‘Bug‘或许有点过,可是...

斑竹说的我理解,如果仅仅拔掉电脑和BDM之间的USB连线,还连在板子上的BDM将会保持MCU处于reset状态。由于P&M没把这一'缺点'(或称Bug有点过份?)通知客户和field应用工程师,导致一些新用户浪费不少时间。

-
MCU必须在复位后才能改变其运行模式,如正常单片模式、特殊单片模式等。
海纳百川  有容乃大
返回列表