weixin_38034776 2017-06-17 10:42 采纳率: 0%
浏览 2585

关于飞思卡尔MC9S12G定时中断问题

为什么我如何改TCx寄存器的值定时的时间还是没变?求大神指导
代码如下

#include /* common defines and macros /
#include "derivative.h" /
derivative-specific definitions */
unsigned int num,num1;

//24M总线周期,指令周期2M
//延时1S函数
void delay() {
unsigned int a,b;
for(a=0;a<2000;a++);
for(b=0;b<1000;b++);

}
void CLOCK_INIT(void);
void main(void) {
/* put your own code here */

DisableInterrupts;
CLOCK_INIT(); //时钟初始化 总线为24M

EnableInterrupts;

TFLG2_TOF=1;//清标志位
DDRM_DDRM2=1;
PTM_PTM2=1;

TSCR1_TEN=0;//定时器不使能
TCNT=0x0000;

TIOS_IOS0=1;//输出输入选择
TCTL2_OM0=0;
TCTL2_OL0=1;
TC0=0x8000;
TIE_C0I=1; //使能中断
TSCR2=0X00; //不分频
TSCR1_TEN=1;//使能

for(;;) {
/* delay();
PTM_PTM2=~PTM_PTM2;
delay();
*/
if(num==366) {
num=0;
DDRM_DDRM2=~DDRM_DDRM2;
}

} /* loop forever /
/
please make sure that you never leave main */
}

void CLOCK_INIT(void) {

// CPMUPROT_PROT=0;
// CPMUCLKS_PLLSEL=1;

CPMUOSC_OSCE=1; //选择外部振荡器
CPMUREFDIV_REFFRQ=2; //6M-8M

CPMUREFDIV_REFDIV=0; //不分频 Fref=8M
CPMUSYNR_SYNDIV=2; // 2*8*(2+1)=48M Fvco=48M
CPMUSYNR_VCOFRQ=0; //32M-48M
CPMUPOSTDIV_POSTDIV=0;//不分频 Fpll=Fvco=48M Fbus=(Fpll/2)=24M
CPMUCLKS_PLLSEL=1;

while(CPMUFLG_LOCK!=0);//等待时钟稳定
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 aa(void) {
num++;
TFLG1 = TFLG1_C0F_MASK;
TFLG2 = TFLG2_TOF_MASK;
}
#pragma CODE_SEG DEFAULT

  • 写回答

1条回答

  • devmiao 2017-06-17 16:00
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)