飞思卡尔MC9S12X Time输出比较
今天带着大家看下飞思卡尔MC9S12 Time模块的输出比较。
具体代码如下
/*************************************************************/
/* 初始化锁相环 */
/* 使用外部晶振:16MHz */
/* 设置总线频率:16MHz */
/*************************************************************/
void INIT_PLL(void)
{
CPMUPROT=0x26; //解除时钟配置保护
CPMUOSC_OSCE=1; //使能外部晶振
while(CPMUOSC_OSCPINS_EN==0); //等待外部晶振使能
CPMUCLKS &=(~0x40);
CPMUCLKS |= 0x80; //设置PLLCLK为系统时钟
/* 初始化锁相环 */
/* 使用外部晶振:16MHz */
/* 设置总线频率:16MHz */
/*************************************************************/
void INIT_PLL(void)
{
CPMUPROT=0x26; //解除时钟配置保护
CPMUOSC_OSCE=1; //使能外部晶振
while(CPMUOSC_OSCPINS_EN==0); //等待外部晶振使能
CPMUCLKS &=(~0x40);
CPMUCLKS |= 0x80; //设置PLLCLK为系统时钟
//PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1), fbus=PLLCLK/2
CPMUSYNR=0x01; //SYNDIV的值为1,
CPMUREFDIV = 0x81; //REFDIV的值为1
CPMUPOSTDIV=0x00;
CPMUPLL=0x10;
CPMUSYNR=0x01; //SYNDIV的值为1,
CPMUREFDIV = 0x81; //REFDIV的值为1
CPMUPOSTDIV=0x00;
CPMUPLL=0x10;
while(CPMUFLG_LOCK==0); //等待PLLCLK锁定
CPMUPROT=0x00; //使能时钟配置保护
}
CPMUPROT=0x00; //使能时钟配置保护
}
/************************************************************/
/* 初始化TIM模块 */
/************************************************************/
void initialize_TIM(void){
TSCR1_TFFCA = 1; // 定时器标志位快速清除
TSCR1_TEN = 1; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
TIOS = 0xff; //指定所有通道为输出比较方式
TCTL1 = 0x00; // 后四个通道设置为定时器与输出引脚断开
TCTL2 = 0x00; // 前四个通道设置为定时器与输出引脚断开
TIE = 0x00; // 禁止所有通道定时中断
TSCR2 = 0x06; // 预分频系数pr2-pr0:110,时钟周期为4us,
TFLG1 = 0xff; // 清除各IC/OC中断标志位
TFLG2 = 0xff; // 清除自由定时器中断标志位
}
如需获取相关源码,请关注微信公众号“嵌入式软件开发学习圈”,
留言“飞思卡尔time”,即可免费获取相关学习资料。
微信公众号内有其他嵌入式学习经验分享。需要朋友们可以关注下微信公众号
如有相关嵌入式学习问题或疑问,欢迎在微信公众号留言.