mirror of
https://gitee.com/dlmu-cone/bf_original_balance_chassis
synced 2026-07-23 19:25:09 +08:00
中断读取bmi088 修改部分文档
This commit is contained in:
@@ -46,7 +46,7 @@ static Shoot_Upload_Data_s shoot_fetch_data; // 从发射获取的反馈信息
|
||||
|
||||
static Robot_Status_e robot_state; // 机器人整体工作状态
|
||||
|
||||
BMI088Instance *bmi088; // 云台IMU
|
||||
BMI088Instance *bmi088_test; // 云台IMU
|
||||
BMI088_Data_t bmi088_data;
|
||||
void RobotCMDInit()
|
||||
{
|
||||
@@ -57,7 +57,7 @@ void RobotCMDInit()
|
||||
.spi_handle = &hspi1,
|
||||
.GPIOx = GPIOA,
|
||||
.cs_pin = GPIO_PIN_4,
|
||||
.spi_work_mode = SPI_IT_MODE,
|
||||
.spi_work_mode = SPI_DMA_MODE,
|
||||
},
|
||||
.acc_int_config = {
|
||||
.GPIOx = GPIOC,
|
||||
@@ -68,7 +68,7 @@ void RobotCMDInit()
|
||||
.spi_handle = &hspi1,
|
||||
.GPIOx = GPIOB,
|
||||
.cs_pin = GPIO_PIN_0,
|
||||
.spi_work_mode = SPI_IT_MODE,
|
||||
.spi_work_mode = SPI_DMA_MODE,
|
||||
},
|
||||
.gyro_int_config = {
|
||||
.GPIO_Pin = GPIO_PIN_5,
|
||||
@@ -90,7 +90,7 @@ void RobotCMDInit()
|
||||
.MaxOut = 100,
|
||||
},
|
||||
};
|
||||
bmi088 = BMI088Register(&bmi088_config);
|
||||
bmi088_test = BMI088Register(&bmi088_config);
|
||||
rc_data = RemoteControlInit(&huart3); // 修改为对应串口,注意如果是自研板dbus协议串口需选用添加了反相器的那个
|
||||
vision_recv_data = VisionInit(&huart1); // 视觉通信串口
|
||||
|
||||
@@ -319,7 +319,7 @@ static void EmergencyHandler()
|
||||
/* 机器人核心控制任务,200Hz频率运行(必须高于视觉发送频率) */
|
||||
void RobotCMDTask()
|
||||
{
|
||||
BMI088Acquire(bmi088,&bmi088_data) ;
|
||||
BMI088Acquire(bmi088_test,&bmi088_data) ;
|
||||
// 从其他应用获取回传数据
|
||||
#ifdef ONE_BOARD
|
||||
SubGetMessage(chassis_feed_sub, (void *)&chassis_fetch_data);
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
|
||||
#include "bsp_log.h"
|
||||
|
||||
osThreadId insTaskHandle;
|
||||
// osThreadId insTaskHandle;
|
||||
osThreadId robotTaskHandle;
|
||||
osThreadId motorTaskHandle;
|
||||
osThreadId daemonTaskHandle;
|
||||
osThreadId uiTaskHandle;
|
||||
|
||||
void StartINSTASK(void const *argument);
|
||||
// void StartINSTASK(void const *argument);
|
||||
void StartMOTORTASK(void const *argument);
|
||||
void StartDAEMONTASK(void const *argument);
|
||||
void StartROBOTTASK(void const *argument);
|
||||
@@ -35,9 +35,9 @@ void StartUITASK(void const *argument);
|
||||
*/
|
||||
void OSTaskInit()
|
||||
{
|
||||
osThreadDef(instask, StartINSTASK, osPriorityAboveNormal, 0, 1024);
|
||||
insTaskHandle = osThreadCreate(osThread(instask), NULL); // 由于是阻塞读取传感器,为姿态解算设置较高优先级,确保以1khz的频率执行
|
||||
// 后续修改为读取传感器数据准备好的中断处理,
|
||||
// osThreadDef(instask, StartINSTASK, osPriorityAboveNormal, 0, 1024);
|
||||
// insTaskHandle = osThreadCreate(osThread(instask), NULL); // 由于是阻塞读取传感器,为姿态解算设置较高优先级,确保以1khz的频率执行
|
||||
// // 后续修改为读取传感器数据准备好的中断处理,
|
||||
|
||||
osThreadDef(motortask, StartMOTORTASK, osPriorityNormal, 0, 256);
|
||||
motorTaskHandle = osThreadCreate(osThread(motortask), NULL);
|
||||
@@ -54,24 +54,24 @@ void OSTaskInit()
|
||||
HTMotorControlInit(); // 没有注册HT电机则不会执行
|
||||
}
|
||||
|
||||
__attribute__((noreturn)) void StartINSTASK(void const *argument)
|
||||
{
|
||||
static float ins_start;
|
||||
static float ins_dt;
|
||||
INS_Init(); // 确保BMI088被正确初始化.
|
||||
LOGINFO("[freeRTOS] INS Task Start");
|
||||
for (;;)
|
||||
{
|
||||
// 1kHz
|
||||
ins_start = DWT_GetTimeline_ms();
|
||||
INS_Task();
|
||||
ins_dt = DWT_GetTimeline_ms() - ins_start;
|
||||
if (ins_dt > 1)
|
||||
LOGERROR("[freeRTOS] INS Task is being DELAY! dt = [%f]", &ins_dt);
|
||||
VisionSend(); // 解算完成后发送视觉数据,但是当前的实现不太优雅,后续若添加硬件触发需要重新考虑结构的组织
|
||||
osDelay(1);
|
||||
}
|
||||
}
|
||||
// __attribute__((noreturn)) void StartINSTASK(void const *argument)
|
||||
// {
|
||||
// static float ins_start;
|
||||
// static float ins_dt;
|
||||
// INS_Init(); // 确保BMI088被正确初始化.
|
||||
// LOGINFO("[freeRTOS] INS Task Start");
|
||||
// for (;;)
|
||||
// {
|
||||
// // 1kHz
|
||||
// ins_start = DWT_GetTimeline_ms();
|
||||
// //INS_Task();
|
||||
// ins_dt = DWT_GetTimeline_ms() - ins_start;
|
||||
// if (ins_dt > 1)
|
||||
// LOGERROR("[freeRTOS] INS Task is being DELAY! dt = [%f]", &ins_dt);
|
||||
// VisionSend(); // 解算完成后发送视觉数据,但是当前的实现不太优雅,后续若添加硬件触发需要重新考虑结构的组织
|
||||
// osDelay(1);
|
||||
// }
|
||||
// }
|
||||
|
||||
__attribute__((noreturn)) void StartMOTORTASK(void const *argument)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user