比较关键 的 systick 函数: 
 
如下: 
 
/******************** (C) COPYRIGHT 2012 WildFire Team *************************** 
 * 文件名  :SysTick.c 
 * 描述    :SysTick 系统滴答时钟10us中断函数库,中断时间可自由配置, 
 *           常用的有 1us 10us 1ms 中断。 
 
 * 库版本  :ST3.5.0 
*/ 
 
#include "SysTick.h" 
#include "assignment1.h" 
#include "assignment2.h" 
#include "assignment3.h" 
 
extern float Angle;//角度 
extern float Gyro_y;//陀螺仪 
 
extern float Accel_x;//X轴加速度值暂存 
extern float Accel_y;//Y轴加速度值暂存 
extern float Accel_z;//加速度计值暂存 
 
extern float Angle_az;//加速度计算输出角度 
extern float Angle_gy;//陀螺仪计算的倾角 
 
extern float PWM;//浮点型PEM值 
 
extern int PWM_R;//右轮PWM值计算 
extern int PWM_L; //左轮PWM值计算 
 
extern int ADC_Direction; 
extern int Direction_Difference; 
 
extern float x; 
extern float y; 
extern float z; 
 
extern int int_PWM;//整形PWM值 
 
extern float integral;//速度积分百分比 
 
/*启动系统滴答定时器 SysTick */ 
void SysTick_Init(void) 
{ 
    /* SystemFrequency / 1000    1ms中断一次 
     * SystemFrequency / 100000         10us中断一次 
     * SystemFrequency / 1000000 1us中断一次 
     */ 
    SysTick_Config(SystemCoreClock /200);//200hz系统频率 
 
} 
 
/*定时器中断服务函数,构建系统运行周期*/ 
float a; 
float Kp; 
 
void SysTick_Handler() 
{ 
 
    a++; 
    Kp=a/40; 
    if(Kp>12) 
    { 
        Kp=12; 
    }//调试kp的参数,这个算法用于缓慢加载pid参数 
 
 
    Angle_Calcu();//角度计算 
    PWM_Calcu();//pwm计算输出 
    Direction_Dispose();//差速算法,pwm输出 
//        printf("%f\n",Kp); 
 
} 
 
 
 
 
 |