1
main.cpp
- Committer:
- shaorui
- Date:
- 2019-12-10
- Revision:
- 7:4362ea3d5300
- Parent:
- 6:aad89fd109c2
- Child:
- 8:95a914f962bd
File content as of revision 7:4362ea3d5300:
#include "mbed.h" #include <cstring> #include "math_ops.h" #include "leg_message.h" #include "CAN.h" #include "used_leg_message.h" #include "data_command.h" #include "data_pc.h" #include "data_board.h" #include "mode.h" #include "control.h" #include "calculate.h" int main() { pc.baud(115200); dianciji.baud(115200); //shouzhua.baud(115200); command.baud(115200); command.attach(&serial_command_isr); //sf_m_c = 0; // 主要为接收模式 board.baud(115200); board.attach(&serial_board_isr); sf_m_b = 1; // 主要为发送模式 pf_can.frequency(1000000); pf_can.filter(CAN_ID<<21, 0xFFE00004, CANStandard, 0); pf_rxMsg.len = 6; PF_can.len = 8; PF_can.id = 0x0a; df_can.frequency(1000000); df_can.filter(CAN_ID<<21, 0xFFE00004, CANStandard, 0); df_rxMsg.len = 6; DF_can.len = 8; DF_can.id = 0x0b; NVIC_SetPriority(USART1_IRQn, 3); // pc中断优先级高于board NVIC_SetPriority(USART2_IRQn, 4); while(1) { counter++; //获取AD ad1 = AD1.read() * 3300; ad2 = AD2.read() * 3300; //////////////////////// CAN获取电机位置速度信息 ////////////////////////// pf_can.read(pf_rxMsg); unpack_reply(pf_rxMsg, &a_state); wait_us(10); df_can.read(df_rxMsg); unpack_reply(df_rxMsg, &a_state); ppf = a_state.pf.p; // 从CAN获得的当前位置 pdf = a_state.df.p; //====================================================================// /////////////////////// 485获取步态,力传感器信息 ////////////////////////// sf_m_b = 1; // 发送模式 wait_us(200); // 等待选择引脚电压稳定 board.printf("A1B"); wait_ms(1); // mbed特色,需要等待数据完全发送 sf_m_b = 0; // 接收模式 wait_us(200); // 等待选择引脚电压稳定 wait_ms(3); // 等待从机上传数据 gait_decode(); //pc.printf("A1B: %d - %d - %f - %f - %f\n\r", Gait_num_valid, Gait_now, Gait_per_now, COP_Y, COP_X); gait_clear(); sf_m_b = 1; // 发送模式 wait_us(200); // 等待选择引脚电压稳定 board.printf("A2B"); wait_ms(1); // mbed特色,需要等待数据完全发送 sf_m_b = 0; // 接收模式 wait_us(200); // 等待选择引脚电压稳定 wait_ms(4); // 等待从机上传数据 ad_decode(); //pc.printf("A2B: %f - %f\n\r", ad_pf, ad_df); ad_clear(); //====================================================================// ////////////////////////// 电机状态控制,命令发送 ////////////////////////// control(); if(send_enable == 1) { PackAll(); WriteAll(); //send_enable = 0; } /**********************************************************************/ ////////////////////////////// 输出状态信息 ////////////////////////////// /* if(counter >= 20000) { //pc.printf("\n\rpf- %.3f %.3f %.3f \n\r", a_state.pf.p, a_state.pf.v, a_state.pf.t); //pc.printf("df- %.3f %.3f %.3f \n\r", a_state.df.p, a_state.df.v, a_state.df.t); counter = 0; } */ //pc.printf("\n\rPpd: %f - %f\r", SP_pf, SP_df); pc.printf("\n\rC: %f - %f\r", a_control.pf.p_des, a_control.df.p_des); pc.printf("\n\rP: %f - %f\r", a_state.pf.p, a_state.df.p); //dianciji.printf(); //电刺激输出 //shouzhua.printf(); //手抓输出 //pc.printf("A1B: %d - %d - %f - %f - %f\r", Gait_num_valid_real, Gait_now_real, Gait_per_now_real, COP_Y_real, COP_X_real); //pc.printf("A2B: %f - %f\n\r", ad_pf_real, ad_df_real); /**********************************************************************/ } }