网站备案幕布psd,58同城建网站怎么做,公司邮箱一般用哪种,百度模拟搜索点击软件1. PH47框架逻辑层全局引用对象 全局引用 功能简介 快速访问 bus 数据总线系统功能实现#xff0c;如对总线数据项读写操作等 数据总线bus drv 驱动层功能实现#xff0c;如飞控板相关的各种硬件传感器设备进行操作等 驱动层drv mcu 对mcu的片内接口及设备进行操作… 1. PH47框架逻辑层全局引用对象 全局引用 功能简介 快速访问 bus 数据总线系统功能实现如对总线数据项读写操作等 数据总线bus drv 驱动层功能实现如飞控板相关的各种硬件传感器设备进行操作等 驱动层drv mcu 对mcu的片内接口及设备进行操作 驱动层mcu frm 框架层基本功能实现 框架层frm frm.led 对飞控板状态指示led进行操作 frm.mutipilot 多飞控板协作功能实现 core 框架层高级功能实现 core.mavlink mavlink 协议对地遥测通讯功能实现 mavlink core.airlink mavlink协议空对空遥测通讯功能实现 core.para 对机载参数进行读写及存储等操作 机载参数系统 core.wp 对导航航点进行读写及修改操作 algo 算法层功能实现 应用层app app 应用层功能实现 应用层开发 2. PH47框架全局函数及变量
全局状态变量操作相关函数 功能描述 对应函数 快速访问 全局状态变量状态操作 gSetStatus() gGetStatus() 全局状态变量 设置全局错误、警告 gSetGlobalState() 设置飞控板状态GPIO 测试Pin gTrigleTestPin()
全局时间相关功能函数 功能描述 对应函数 快速访问 获取当前ms时间 gGetMills() 时间相关 获取当前ms时间精确到us gGetMills_f() 获取前一时刻到当前的ms时间间隔 gGetTmUsage_ms() 获取时间间隔 获取前一时刻到当前的us时间间隔 gGetTmUsage_us() ms 级别延时非阻塞但依赖于FreeRtos启动 osDelay() ms 级别延时阻塞不依赖FreeRtos HAL_Delay() us 级别延时阻塞 gDelay_us()
全局调试及信息显示相关函数 功能描述 对应函数 快速访问 调试信息输出宏(队列方式依赖于框架启动完成) TRACE() 调试输出 真值确认宏 ASSERT() 调试串口字符串输出(中断方式) gPrintf() 调试串口以及CSS状态窗口信息输出 gShowInfo() 格式化字符串生成 gFormat()
3. 数据总线操作通过bus引用 驱动层常用功能函数通过drv或mcu引用 功能描述 对应函数 快速访问 设置总线数据项的数值 Set() 数据总线 设置当前总线数据为安全总线 SetSafe() 获取总线数据项数值 Get() 获取总线数值的引用 GetRef() 获取总线数据项最近一次被 设置时刻的时间戳(ms) GetTimeStamp_ms() GetTmStampDec_us() 获取总线数据项最近两次被设置时刻间的时间间隔 GetDt2Prev_us() GetDt2Prev_ms()
驱动层功能函数大多数为MCU接口驱动一般用于飞控板硬件层面驱动程序的开发。目前代码框架已支持的传感器硬件输出数据均已纳入到数据总线体系用户可直接使用。初级开发者无需过多关心。
但是驱动层也提供了少量功能函数供各层级的开发者使用最常用的是Pwm输入输出相关函数。
Pwm操作函数通过drv._pPwm引用 功能描述 对应函数 快速访问 获取当前输入通道的Pwm脉冲宽度(us) GetPwmIn() 设置当前Pwm输出通道的 Pmw脉冲宽度(us) SetPwmWidth(); 使能当前Pwm输出控制 EnablePwmOut()
Stm32 ADC 电压测量函数全局函数 功能描述 对应函数 快速访问 获取当前控制板电压测量通道的电压数值 (测量范围0-3.3v, 单位0.01v。测量电压必须在控制板外进行分压处理否则会烧毁控制板) gGetBoardVol() 获取当前电池电压测量通道的电压数值 (测量范围0-3.3v, 单位0.01v。测量电压必须在控制板外进行分压处理否则会烧毁控制板) gGetBatteryVol()
驱动层串口常用操作通过指针drv._pUsartXxx引用 功能描述 对应函数 快速访问 发送数据环形缓冲区对象FIFO CPhSerial._RingBuf_Snd 接收数据环形缓冲区对象FIFO CPhSerial._RingBuf_Rev 设置串口波特率 SetBaudRate() 以中断方式将字符串写入串口发送环形缓冲区并立即发送。 WriteData_INT() 以DMA方式将直接发送字符串不写入发送环形缓冲区。 WriteData_DMA() 将一个字符加入串口发送环形缓冲区但不发送 Add2SndBuf() 将字符串加入串口发送环形缓冲区但不发送 Add2SndBuf_DMA() 以中断方式发送当前环形发送缓冲区中的数据 StartSend_IT() 以DMA方式发送当前环形发送缓冲区中的数据 StartSend_DMA() 获取当前接收环形缓冲区当中的数据字节数 GetRevCount() 读取当前接收环形缓冲区当中的一个字节数据读取成功后将该直接数据移出环形缓冲区 GetRevByte() 判断当前串口DMA是否忙碌 IsDmaBusy()
驱动层SPI接口常用操作通过指针mcu. _pSpiXxx引用 功能描述 对应函数 快速访问 设置当前spi接口速率 SetSpeed() 写入1字节数据到spi WriteByte() 从spi接口读取1字节数据 ReadByte() 写入多个字节数据到spi SpiTran() 从spi接口读取多个字节数据 SpiReceive() 同时向spi接口中写入并读取多个字节数据 SpiTranRev()
驱动层I2C接口常用操作通过指针mcu._pI2C_Xxx引用 功能描述 对应函数 快速访问 ST, 产生 IIC 起始信号 IIC_Start() SP, 产生 IIC 停止信号 IIC_Stop() 等待应答信号到来, 返回值应答等待时间(us) IIC_Wait_Ack() 产生ACK应答 IIC_Ack(void) 不产生ACK应答 IIC_Nack() 向I2C写入一个字节, 并返回从机有无应答 IIC_Send_Byte() 从I2C读取一个字节 IIC_Read_Byte() 读取指定ID的I2C设备上指定地址的1字节数据 ReadOneByte() 向指定ID的I2C设备上指定地址写入1字节数据 WriteOneByte() 读取指定ID的I2C设备上从指定地址开始的多个字节数据 ReadBytes() 向指定ID的I2C设备上从指定地址写入多个字节数据 WriteBytes() 4. 框架层常用功能函数通过frm引用
框架层基本功能函数通过frm引用 功能描述 对应函数 快速访问 读取全局状态变量数值 SetStatus() 框架层函数 置全局状态变量数值 GetStatus() 初始化Post 消息 InitPostMsg() 以Post方式发出一个消息 PostMsg() 检查是否有特定消息翼Post方式发出 CheckPostMsg() 对以Send方式发出的消息进行处理回调函数 HandleMessage() 当前是否工作于HIL模式 IsHilSimulateMode() 当前是否工作于真实传感器模式 IsSensorMode() 设置当前飞行模式 SetFlightMode() 对当前飞控实施指令控制 FlightControl_Ins() 处理来自GCS的上行mavlink控制命令 回调函数 CommonMsgProc_Gcs() 处理来自其他飞控板的mavlink控制命令 回调函数 CommonMsgProc_Air() 向GCS下行发送mavlink数据帧回调函数 MavMsgSnd2GCS_Slow() 所有参数上传完毕事件响应函数回调函数 Event_ParaUpComplete() 设置对GCS下行mavlink数据帧的发送速率 SetMsgRate_Gcs()
框架层基本子引用状态指示LED控制通过frm.led引用 功能描述 对应函数 快速访问 翻转闪烁指示 LED Led_Toggle() 以闪烁编码方式进行状态显示非阻塞 Led_ShowStatus()
框架层基本子引用多飞控板协作通过frm. mutipilot引用 功能描述 对应函数 快速访问 改变当前调试串口多功能串口的用途 ChangeConsoleMode() ChangeFlightCtrlRights() MavMsgSnd2Airlink() DP_MasterSnd2Slaver() DP_SlaverSnd2Master() DP S_ParseMasterMsg() DPM_ParseSlaverMsg()
5. 框架层扩展功能及函数通过core引用
框架层重要成员变量通过core引用 功能描述 变 量 快速访问 PH47框架初始化全部完成标志 blSysInitCompleted
框架层扩展功能函数通过core引用 功能描述 对应函数 快速访问 读取全局状态变量数值 SetStatus() 置全局状态变量数值 GetStatus() 检查是否有特定消息翼Post方式发出 CheckPostMsg() 当前是否工作于真实传感器模式 IsSensorMode() 获取当前GPS精度状态 GetGpsStatus() 设置当前GPS精度状态 SetGpsStatus() 设置全局错误状态代码 SetGlobalState() 设置全局警告状态代码 SetGlobalError() 发送用户自定义mavlink数据帧 SendUserDefData()
框架层扩展子应用对地遥测通讯通过core.mavlink引用
由于整个mavlink通讯系统已经进行了完善的封装故初中级用户在二次开发过程中涉及到遥测通讯功能函数很少主要集中在下行指令或状态发送方面。在其它方面用户只需要专注于数据总线操作从总线中读取或写入数据即可。
对于高级开发二次用户关于遥测系统功能函数具体可参见代码实现文件\DevStudio\Frame\Core\MavlinkWrap.h。 功能描述 对应函数 快速访问 向GCS下行发送字符串信息 AddMsg_StatusText() Mavlink 向GCS下行发送带7个参数的长控制命令 AddMsg_Command() 向GCS下行发送带2个参数的短控制命令 AddMsg_UserDefData()
框架层扩展子应用机载参数系统通过core.para引用
与遥测系统类似机载参数系统的读取、存储、更新及传送机制也进行了完善的封装用户只需在需要时调用下述函数读取或写入参数即可剩下所有工作由框架负责完成。 功能描述 对应函数 快速访问 获取机载参数数值 Get() 机载参数 设置机载参数数值 Set()
框架层扩展子应用航点存储系统通过core.wp引用 功能描述 对应函数 快速访问 读取航点数据 ReadWP() 写入航点数据 WriteWP() 获取航点数量 GetWpCounts() 读取航点的位置信息 ReadWpLoc()
6. 算法层功能通过algo引用
PH47代码框架层提供给二次开发用户的功能函数很少。在算法层当中集成了飞行及导航控制的大量功能实现这些功能通过框架的架构组成了飞行及导航控制功能的具体实现。二次开发用户可使用算法层各模块的现有功能函数但并不推荐。
算法层更重要的意义在于为用户进行二次开发尤其是算法逻辑的二次开发搭建起了逻辑清晰功能完善的设计及运行框架。用户在此框架下可集中注意力在算法逻辑自身的开发上而无需过多分心于运行逻辑的设计实现。
传感器数据处理模块指针通过algo引用 功能描述 功能模块指针 对应抽象类 主IMU类对象指针 _pSensor_IMU CSensor_Imu_Port 扩展IMU类对象指针 _pSensor_IMU_Ext CSensor_Imu_Port 磁强传感器类对象指针 _pSensor_Mag CSensor_Mag_Port 气压传感器类对象指针 _pSensor_Baro CSensor_Baro_Port 空速传感器类对象指针 _pSensor_Airspeed CSensor_Airspeed_Port Pwm输入处理类对象指针 _pSensor_RcCtrl CSensor_RC_Port Tof及光流处理类对象指针 _pSensor_Tof CSensor_UsartParse_Port
控制功能模块指针通过algo引用 功能描述 功能模块指针 对应抽象类 输入数据控制器模块 _pCtrlDataProc CCtrlDateProcess_Port 姿态解算模块 _pAttitudeCore CAttitudeCore_Port 姿态控制器模块 _pController_Atti CController_Attitude_Port 高度/速度控制器模块 _pController_HgtSpd CController_HeightSpeed_Port 位置/速度估算器模块 _pPosVelCore CPosVelCore_Port 位置控制器模块 _pController_Position CController_Position_Port Pwm输出控制器模块 _pServoOutCtrl CServoOutCtrl_Port
7. 应用层功能函数通过app引用
与算法层类似应用层也为用户进行二次开发搭建了完善的框架。同时应用层提供了多个回调函数空函数供用户加入自己的代码实现。 功能描述 回调函数 PH47框架启动完成后调用完成用户功能代码初始化工作 Init() 快速线程回调函数被调用频率在400-500hz之间 基于Stm32F411的BBP飞控板 FastThread() 正常线程回调函数被调用频率固定为250hz NormalThread_250Hz() 慢速线程回调函数被调用频率固定为50hz SlowThread_50Hz() 对用户自定义调试串口控制命令的处理函数 HandleConsoleCmd() 对来自于GCS的用户自定义上行控制命令处理函数 HandleRevMavlinkMsg() 飞行及导航控制实现函数。250hz速率调用调用优先级高于NormalThread_250Hz()函数 FlightControl_FixWing() 起飞前检查回调函数 PreTakeOffCheck_FixWing() 飞行模式切换前回调函数 PreSwitchFlightMode() 更多内容见CSDN博客专栏无人机飞控https://blog.csdn.net/ss15/category_9690939.html?spm1001.2014.3001.5482相关资源PH47: PH47运动控制代码框架.https://gitee.com/ss15/ph47