智能车学习笔记乱写

发布时间 2023-12-02 00:28:46作者: DarthVictor

乱写的归纳总结,翻着PPT想到什么写什么。

代码都是用的逐飞的库。

中断

定时循环触发一些事件。

中断处理优先级高于main且各个中断之间也有优先级差异。

举一个典型应用是在main里执行摄像头图像处理程序,然后定时中断读取error来执行PID控制舵机打角。和这个例子有关的代码如下:

//在main里初始化一个中断进程。前一个参数是定时器通道号,后一个参数是触发间隔时间
pit_ms_init(CCU60_CH0,10);
while(1){
  bin_image(KP,KD,image);//重复执行图像处理
}
//下面是中断里放的部分
IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY) //选用和初始化的通道号相同的isr
{
    interrupt_global_enable(0);                     // 开启中断嵌套
    pit_clear_flag(CCU60_CH0);
    if(page==1){
        uint32 PID=(uint32)(KP*now_error-KD*(now_error-lst_error)+MID_SERVO); //PID控制
        if(PID>MID_SERVO+MAX_ANGLE) PID=MID_SERVO+MAX_ANGLE;
        if(PID<MID_SERVO-MAX_ANGLE) PID=MID_SERVO-MAX_ANGLE;
        pwm_set_duty(SERVO,PID);
        lst_error=now_error;
    }
}