智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1461|回复: 4
打印 上一主题 下一主题

[编程类] 关于TIM输入捕捉功能的理解 求大神

[复制链接]

15

主题

64

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1529
威望
734
贡献
413
兑换币
382
注册时间
2012-11-27
在线时间
191 小时
毕业学校
跳转到指定楼层
1#
发表于 2013-3-10 19:37:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------*/
/************************************************************
飞翔科技MC9S12XS128汽车电子开发板
E-mail:bhfengchong@gmail.com
       2008f.d@163.com
淘宝店:http://fxfreefly.taobao.com
        http://fxfreefly2.taobao.com
************************************************************/
/*---------------------------------------------------------*/
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK     32000000    //总线频率
#define OSC_CLOCK     16000000    //晶振频率
unsigned int delaytime;
unsigned int time1;
unsigned int time2;
/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CLKSEL &= 0x7f;       //set OSCCLK as sysclk
    PLLCTL &= 0x8F;       //Disable PLL circuit
    CRGINT &= 0xDF;
   
    #if(BUS_CLOCK == 40000000)
      SYNR = 0x44;
    #elif(BUS_CLOCK == 32000000)
      SYNR = 0x43;     
    #elif(BUS_CLOCK == 24000000)
      SYNR = 0x42;
    #endif
    REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
    PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); //PLLCLK is Locked already
    CLKSEL |= 0x80;        //set PLLCLK as sysclk
}
/************************************************************/
/*                    初始化ECT模块                         */
/************************************************************/
void initialize_ect(void){
  TSCR1_TFFCA = 1;  // 定时器标志位快速清除
  TSCR1_TEN = 1;    // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
  TIOS  = 0xfe;      //指定通道0为输入捕捉方式
  TCTL4 = 0x01;     // 设置通道0为捕捉上升沿方式
  TIE   = 0x01;     // 允许通道0定时中断
  TSCR2 = 0x07;     // 预分频系数pr2-pr0:111,时钟周期为4us,
  TFLG1 = 0xff;     // 清除各IC/OC中断标志位
  TFLG2 = 0xff;     // 清除自由定时器中断标志位
}
/*************************************************************/
/*                        初始化PWM                          */
/*************************************************************/
void init_pwm(void)
{
  PWMCTL_CON01= 1;   //联结通道0,1为16位的PWM
  PWMPOL_PPOL1= 1;   //通道01的极性为高电平有效
  PWMPRCLK = 0x55;   //A时钟和B时钟的分频系数为32,频率为1MHz
  PWMSCLA  =  100;   //SA时钟频率为5KHz
  PWMSCLB  =  100;   //SB时钟频率为5KHz
  PWMCLK =0x02;      //通道01用SA时钟作为时钟源
  PWMCAE   = 0x00;   //脉冲模式为左对齐模式
  PWMPER01  = 500;  //通道01的周期为10Hz
  PWMDTY01  = 250;  //通道01的占空比为50%  
  PWME_PWME1 = 1;    //使能通道01
}
/*************************************************************/
/*                   输入捕捉中断函数                        */
/*************************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void capture(void)
{
if(TFLG1_C0F == 1)
   TFLG1_C0F = 1;
time1 = time2;
time2 = TC0;
delaytime = time2-time1;
LEDCPU = ~LEDCPU;
}
#pragma CODE_SEG DEFAULT
/*************************************************************/
/*                          主函数                           */
/*************************************************************/
void main(void) {
  DisableInterrupts;
  INIT_PLL();
  initialize_ect();
  init_pwm();
  LEDCPU_dir = 1;
  EnableInterrupts;
  LEDCPU = 0;
  for(;;) {}
}
这里是不是检测到一个上升沿就触发了中断   delaytime是不是就是上升沿与上升沿的间隔  还有这句话TSCR2 = 0x07在这里又什么用  TC是怎么加数的

15

主题

64

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1529
威望
734
贡献
413
兑换币
382
注册时间
2012-11-27
在线时间
191 小时
毕业学校
2#
 楼主| 发表于 2013-3-11 14:25:57 | 只看该作者
求顶啊
回复 支持 反对

使用道具 举报

3

主题

353

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3257

活跃会员奖章优秀会员奖章

威望
1612
贡献
1085
兑换币
761
注册时间
2012-7-12
在线时间
280 小时
3#
发表于 2013-4-1 22:47:02 | 只看该作者
回复 支持 反对

使用道具 举报

32

主题

978

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2834
QQ
威望
1620
贡献
482
兑换币
1009
注册时间
2012-11-29
在线时间
366 小时
4#
发表于 2013-4-10 08:16:38 | 只看该作者
你确定程序没错???
回复 支持 反对

使用道具 举报

15

主题

64

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1529
威望
734
贡献
413
兑换币
382
注册时间
2012-11-27
在线时间
191 小时
毕业学校
5#
 楼主| 发表于 2013-4-10 13:23:35 | 只看该作者
dapan945 发表于 2013-4-10 08:16
你确定程序没错???

你确定有错??   我只是问了我不理解的地方呀
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 13:34 , Processed in 0.061227 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表