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 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用