[资料分享与下载] 飞思卡尔单片机DZ60---输入捕捉

[复制链接]
niuyaliang 发表于 2015-2-27 19:35 | 显示全部楼层 |阅读模式
  1. [cpp] view plaincopy
  2. #include <hidef.h> /* for EnableInterrupts macro */  
  3. #include "derivative.h" /* include peripheral declarations */  
  4.   
  5.   
  6.   
  7. //TPM1通道0(与PTD2连接第三个LED灯? 产生周期为0.5s占空比为50%的PWM波  
  8. //利用TPM2通道0(与PTD0连接第一个LED灯)对这个PWM波的上升沿进行捕捉  
  9.   
  10.   
  11. /*************************************************************/  
  12. /*                  初始化总线时钟PEE模式                    */  
  13. /*              外部晶振频率为4MHz,总线频率16MHz            */  
  14. /*************************************************************/  
  15. void INIT_MCG(void)   
  16. {  
  17.   MCGC2=0x36;         
  18.   while(!MCGSC_OSCINIT);      
  19.   MCGC1=0xb8;  
  20.   while(MCGSC_IREFST);  
  21.   while(MCGSC_CLKST!=0b10);  
  22.   MCGC2_LP = 1;  
  23.   MCGC1 = 0x90;  
  24.   MCGC3 = 0x48;      
  25.   MCGC2_LP = 0;  
  26.   while(!MCGSC_PLLST);  
  27.   while(!MCGSC_LOCK);  
  28.   MCGC1 = 0x10;  
  29.   while(MCGSC_CLKST!=0b11);  
  30. }   
  31.   
  32.   
  33. //TPM1的通道0与PTD2(连接第三个LED灯)  
  34. void INIT_TPM1_CH0(void)  
  35. {  
  36.    
  37.   TPM1SC  = 0X0F;// 总线时钟128分频。  
  38.   TPM1MOD = 62500 + TPM1CNT;//周期为0.5s  
  39.    
  40.   TPM1C0SC = 0X28;//边沿脉冲  
  41.   TPM1C0V  = 32500;//设置有效脉冲宽度为32500?50%  
  42.    
  43.    
  44.   
  45. }  
  46.   
  47.   
  48. //TPM2的通道0对上升沿进行捕捉  
  49. void INIT_TPM2_CH0(void)   
  50. {  
  51.    TPM2SC  = 0X0F;// 总线时钟128分频  
  52.    TPM2C0V = 0X44;//开中断,输入捕捉,上升沿  
  53.   
  54. }  
  55.   
  56.   
  57.   
  58.   
  59.   
  60. void main(void) {  
  61.   
  62.    
  63.   DisableInterrupts;  
  64.   SOPT1 = 0;  
  65.   EnableInterrupts;  
  66.    
  67.   INIT_TPM1_CH0();  
  68.   INIT_TPM2_CH0();  
  69.    
  70.   while(1);  
  71.    
  72. }  


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

本版积分规则

212

主题

2427

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部