timer0.c

来自「卡尔曼滤波(非矩阵)参考程序」· C语言 代码 · 共 31 行

C
31
字号
#include "main.h"

volatile unsigned int TimeCount[5] = {0};
volatile unsigned int Set_Count = 0,setcount = 0;
void PIT_init(void)//定时中断初始化函数 5MS定时中断设置 
{
    PITCFLMT_PITE=0; //定时中断通道0关
    PITCE_PCE0=1;//定时器通道0使能
    PITMTLD0=8-1;//8位定时器初值设定,8分频,在64MHzBusClock下,为8MHz。即0.125us
    PITLD0=100-1;//16位定时器初值设定。PITTIME*0.125uS  即12.5uS中断一次
    PITINTE_PINTE0=1;//定时器中断通道0中断使能
    PITCFLMT_PITE=1;//定时器通道0使能 
}



#pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区
void interrupt 66 PIT0(void) 
{
  unsigned int i = 0;
  static unsigned char flage = 1;
  static unsigned int Count = 0,speedlow = 0;
  for(i=0;i<5;i++) 
  {
    if(TimeCount[i]>0) TimeCount[i]--;
  }
  if(TimeCount[0]==0) { kalman_update();TimeCount[0] = 800;}   // //采样周期 800*12.5us = 10ms 
  PITTF_PTF0=1;//清中断标志位
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?