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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了