4032|0

473

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

MCF51CN128 定时器输出捕获示例 [复制链接]

下面贴个freescale的coldfire v1系列中mcf51cn128 MCU的一个示例,利用定时器实现输出捕获的功能。
MCF51CN128是freescale去年推出的V1 CORE的coldfire处理器,具有一个以太网控制器,是实现以太网应用的不错选择
具有50MHZ的主频
------------------------------------------------------------------------------------------------------------------------------

#include                         /* for EnableInterrupts macro */
#include "derivative.h"                   /* include peripheral declarations */

void InitSystems()
{

  SOPT1   = 0x10;                          // Disable COP,RSTO
  SPMSC1  = 0x00;                          // Disable LVD
  SPMSC2  = 0x00;                          // Disable power-down modes
  SPMSC3  = 0x00;                          // Disable LVWIE, low trip points
  SCGC1   = 0xFF;                          // Enable bus clock to peripherals
  SCGC2   = 0xFF;                          // Enable bus clock to peripherals
  SCGC3   = 0xFF;                          // Enable bus clock to peripherals
  SCGC4   = 0xFF;                          // Enable bus clock to peripherals
  MCGTRM = NVMCGTRM;                       // Load Trim Values from flash into ICSTRM register
  MCGSC_FTRIM = NVFTRIM_FTRIM;             // Load Fine Trim Value from flash into FTRM register

} // end InitSystems


// Initialize the TPM1CH1 for Output Compare
void TPM1C1_Output_Compare() {
  TPM1SC_CPWMS =0;      // Edge aligned
  TPM1C1SC_CH1IE = 1;   // Enable channel 1 interrupt
  TPM1C1SC_MS1x = 1;    // Output compare
  TPM1C1SC_ELS1x = 1;   // toggle output on compare
  TPM1C1V = 0x8000;     // Interrupt after 32,768 decimal cycles.  
                        // At 32.768Khz, 32,768 cycles yields interrupt every 1 second.
  TPM1SC_PS = 7;        // 4.194304Mhz/128 = 32.768Khz
  TPM1SC_CLKSx = 1;     // bus clock and start the timer
} //end TPM1C1_Output_Compare


/************************
   Main Program Loop
************************/
void main(void) {
  InitSystems();
  TPM1C1_Output_Compare();
  EnableInterrupts; /* enable interrupts */


  for(;;) {
  } /* loop forever */
  /* please make sure that you never leave main */
}


/*********************************************************************
**  Interrupt Service Routines
*********************************************************************/
interrupt VectorNumber_Vtpm1ch1 void   TPM1CH1_ISR(void) {
  TPM1C1SC_CH1F = 0;    // Clear channel flag
  TPM1C1V += 0x8000;    // Increment compare value to next interrupt
}
此帖出自NXP MCU论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表