查看: 2571|回复: 0

[CodeWarrior] codewarrior 不能全速运行

[复制链接]

该用户从未签到

2

主题

3

帖子

0

新手上路

Rank: 1

积分
14
最后登录
2018-6-4
发表于 2018-5-15 22:17:41 | 显示全部楼层 |阅读模式
大家好,本人用的MC9S12S128的飞思卡尔芯片,里面用了简单的定时中断,SCI,下面是源代码。我用的IDE是codewarrior
在运行中有两个现象,1,不能全速运行,只能点一步运行一步。
                                 2,长按f11,在程序运行两个来回以上,拔掉BDM,再上电。程序有可能烧进去了。
/*---------------------------------------------------------*/
/************************************************************

************************************************************/
/*---------------------------------------------------------*/
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define  BUS_CLOCK                   32000000           //总线频率
#define  OSC_CLOCK                   16000000           //晶振频率
unsigned char a[56]={0XEB,0X90,0X83};
#define BAUD 38400                    //串口波特率

/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CLKSEL &= 0x7f;       //set OSCCLK as sysclk
    PLLCTL &= 0x8F;       //Disable PLL circuit
    CRGINT &= 0xDF;

    #if(BUS_CLOCK == 40000000)
      SYNR = 0x44;
    #elif(BUS_CLOCK == 32000000)
      SYNR = 0x43;     
    #elif(BUS_CLOCK == 24000000)
      SYNR = 0x42;
    #endif

    REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
    PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); //PLLCLK is Locked already
    CLKSEL |= 0x80;        //set PLLCLK as sysclk
}

/*************************************************************/

/*************************************************************/
/*                        初始化SCI                          */
/*************************************************************/
void INIT_SCI(void)
{

  SCI0BD = BUS_CLOCK/16/BAUD;   //设置SCI0波特率为9600
  SCI0CR1 = 0x00;       //设置SCI0为正常模式,八位数据位,无奇偶校验
  SCI0CR2 = 0x08;       //允许发送数据,禁止中断功能
}

/*************************************************************/

/*************************************************************/
/*                       串口发送函数                        */
/*************************************************************/
void SCI_send(unsigned char data)
{
  while(!SCI0SR1_TDRE);       //等待发送数据寄存器(缓冲器)为空
  SCI0DRL = data;
}

/*************************************************************/
/*                  串口发送字符串函数                       */
/*************************************************************/
void send_string(unsigned char j)
{
  while(j<56)       //判断字符串是否发送完毕
  {
   SCI_send(a[j]);  
  }
}


/*************************************************************/

/*************************************************************/
/*                     PIT模块初始化函数                     */
/*************************************************************/
void init_PIT(){

PITCFLMT=0X00;   //禁止PIT模块
PITCE_PCE0=1;   // 使能定时器通道0
PITMUX=0X00;//定时器通道0使用Base Timer0(微定时基准0)
PITMTLD0=0XFF;//设置8位微定时装载寄存器0初值
PITLD0=0XFFFF;//设置16位装载寄存器0初值
              //定时周期=(PITMTLD0+1)*(PITLD0+1)*(1/fBUS)=0.52428s
PITINTE=0X01;//使能PIT定时器通道0中断
PITCFLMT=0X80;//使能PIT模块

}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void PIT_INTER(void)
{    unsigned char i;


    if(PITTF_PTF0==1) {

      PITTF_PTF0=1;     //把1改为0      
      LEDCPU=~LEDCPU;
      for (i=0;i=i+1;)
      {
        send_string(a[i]);   
      }

    }
}
#pragma CODE_SEG DEFAULT


/*************************************************************/
/*                         主函数                            */
/*************************************************************/
void main(void) {
  INIT_PLL();
  LEDCPU_dir=1;  //设置 PORTK_PK4为输出脚位
  init_PIT();
  INIT_SCI();

        EnableInterrupts;

  for(;;) {  
    }

}


我知道答案 目前已有0人回答
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-11 12:43 , Processed in 0.089161 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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