久秉包子机器人项目

久秉包子机器人项目


外部中断

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

页面列表

ITEM_HTML