【精品】MK代码分析.doccli();关闭总中断检测飞控板版木设置LED相应管脚关闭看门狗四通道杆量置零T1MER0初始化,用于产牛控制气压高度计偏置电压的pwm倍号,控制蜂鸣器鸣叫以及电机更新频率。TTMER2初始化,用于向4017芯片输出pwm信号,从而将1路pwm转换成多路舵机控制信号。UART0初始化MK主串口,负责与上位机的信息交互。RC_INTT();设置ppm信号输入引脚,设置TIMER1的输入捕获功能以解码ppm信号。ADC_TNTT();初始化AD采样,采样信息包括三轴加速度,三轴角速度,气压高度,电池电量。12C_IN1T();12C总线初始化,配置I2C以控制电机。sei()使能全局中断。PARAMSET_TNTT();设置参数,将参数读入内存屮的ParamSeto检查加速应计是否校准。检杳是否开启高度控制,若开启则校准高度计偏置。SetNeutral();//NeutralReadingWhile(1){UpdateMotor标志是否更新电机状态{MotorControl();SendMotorData();}ess标志是否有上位机请求信息I2cTimeout标志I2C是否超时需报错S10_DEBUG标志是否在串口调试{();ProcessRxData();}检测电池电量。主函数屮的关键过程:voidMotorControl(void)通过控制率确定电机控制量voidSendMotorData(void)发送控制量给电机voidTransmitTxData(void)负责根据串口接收的指令要求发送相应数据voidProcessRxData(void)处理串口接收到的数据,给各种事件标/忐置位串口协议Protocol•anizedasshowninthefollowingtable・Start-BytAddresID~BytnData-BytesCRC-ByteCRC-ByteStop-BytesByte ecoded12e,岸'『+ 'V','DAddr'etcz/modified-base64〃mands•mandsbasedonthedataframesabovearelistedhereThestructsusedbelowaredefinedinuart・h・Forimplementationdetails,:#defineFC_ADDRESS1(b)defineNC_ADDRESS2(c)defineMK3MAG_ADDRESS3(d)#defineBL_CTRL_ADDRESS5(mandsDescriptionIDReceivedAddres 丁“Data IDsAddressSentDataLabelsoftheanalogvaluesintheDebugDataStruet(see'd')aAnyAddru8IndexofAnalogChannel,ASlaveAddru8Index,char[16]labeltextExternControl'bAnyAddrExternControlStructSlaveAddrunsignedchar,
【精品】MK代码分析 来自淘豆网m.daumloan.com转载请标明出处.