乱写的归纳总结,翻着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;
}
}