外部中断
<p>[TOC]</p>
<h4>外部中断</h4>
<p>1.外部中断线2 ---> 中断更新传感器的状态 (垂直电机,水平电机,旋转电机传感器)</p>
<pre><code>在这个中断服务程序中,它主要读取一个PCA9555 I/O扩展器的输入数据,
并根据这些数据来更新一些与电机传感器相关的状态变量。PCA9555是一个常用的I2C总线I/O扩展器,可以扩展GPIO的数量。</code></pre>
<p>2.外部中断线5 ---> 中断更新垂直电机传感器状态 (垂直电机传感器)
BZ_Hoist_V_Motor_Stop();</p>
<p>3.外部中断线6 ---> 中断更新旋转电机传感器状态 (旋转电机传感器)</p>
<pre><code>void BZ_EXTI_Line6_IRQHandler(void)
{
//MOTOR_R_SENSOR
if(rack_motor_sensor_enabled == 1)
{
++Num;
if((Num &lt;=7)&amp;&amp;(Num &gt;=1))
{
if(bz_Freezer_Device.need_reset == 1)
{
if(bz_Freezer_Device.last_column_index == 1)
{
Num = 0;
bz_Freezer_Device.need_reset = 0;
rack_motor_sensor_enabled = 0;//防止以后回到原点,再次执行下面代码
BZ_Rack_Motor_Stop();
// baozhi_eeprom_data.Freezer_Column_num = bz_Freezer_Device.last_column_index; //把bz_Freezer_Device.last_column_index这个值,保存到flash中,防止掉电丢失
// BZ_EEPROM_Data_Write(baozhi_eeprom_data); //写入外部flash
BZ_Buzzer_ON(1);
return;
}
else if(Num == bz_Freezer_Device.need_reset_column_gap)
{
rack_motor_sensor_enabled = 0;//防止以后回到原点,再次执行下面代码
BZ_Rack_Motor_Stop();
// baozhi_eeprom_data.Freezer_Column_num = bz_Freezer_Device.last_column_index; //把bz_Freezer_Device.last_column_index这个值,保存到flash中,防止掉电丢失
// BZ_EEPROM_Data_Write(baozhi_eeprom_data); //写入外部flash
BZ_Buzzer_ON(1);
bz_Freezer_Device.need_reset =0;
Num = 0;
}
else
{
return;
}
}
else if(Num == bz_Freezer_Device.column_gap)
{
rack_motor_sensor_enabled = 0;//防止以后回到原点,再次执行下面代码
BZ_Rack_Motor_Stop();
// baozhi_eeprom_data.Freezer_Column_num = bz_Freezer_Device.last_column_index; //把bz_Freezer_Device.last_column_index这个值,保存到flash中,防止掉电丢失
// BZ_EEPROM_Data_Write(baozhi_eeprom_data); //写入外部flash
BZ_Buzzer_ON(1);
Num = 0;
}
else
{
return;
}
}
else
{
rack_motor_sensor_enabled = 0; //防止以后回到原点,再次执行下面代码
BZ_Rack_Motor_Stop();
Num = 0;
BZ_Buzzer_ON(1);
return;
}
}</code></pre>
<h4>DMA</h4>
<p>1.DMA1_Stream0 中断处理函数 ---> UART8(通用异步接收/发送器8)通过DMA(直接存储器访问)传输完成(TC)或传输错误(TE)时的回调函数
2.DMA1_Stream1 中断处理函数 ---> UART7(通用异步接收/发送器7)通过DMA(直接存储器访问)传输完成(TC)或传输错误(TE)时的回调函数</p>
<h4>TIM</h4>
<p>1.TIM1中断回调函数 --->TIM1_CH2 电机0(水平电机), TIM1_CH3 电机1(机架旋转电机),用于控制水平电机 和 机架旋转电机:主要用于控制两个电机的运动状态,包括加速、匀速、减速和停止,已走的步数</p>
<p>2.TIM3中断回调函数 --->TIM3 用于控制垂直电机</p>
<p>3.TIM13中断回调函数 --->TIM13 用于控制一个蜂鸣器(Buzzer)的开关状态,实现一种特定的蜂鸣模式,即按照一定的时间间隔交替开启和关闭蜂鸣器 (100ms)</p>
<p>4.TIM6中断回调函数 --->TIM6 1ms 系统10ms检测传感器状态 ---- 垂直电机,水平电机,旋转电机,机器人门,冰库门,上吸盘,下吸盘,防夹传感器。</p>
<p>5.TIM7中断回调函数 --->TIM7 1s 心跳机械臂 115,蒸箱定时动作,系统超时(进行超时减时),系统LED指示灯(红灯闪烁)</p>
<h4>USART</h4>
<p>1.处理USART6的接收完成回调函数 9600 ---> 接收机械臂指令(返回码) 485</p>
<p>2.处理USART7的接收完成回调函数 115200 数据宽度为 8 位 停止位为 1 位 无奇偶校验位 全双工--->通过DMA(直接内存访问),用作printf DMA_STREAM_3</p>
<p>3.处理USART8的接收完成回调函数 115200 同usart7 --->通过DMA(直接内存访问),用作cjson(包子订单的解析函数) DMA_STREAM_6</p>