STATIC_INLINE void handle_periodic_tasks( void ) { if (sys_time_check_and_ack_timer(main_periodic_tid)) main_periodic(); if (sys_time_check_and_ack_timer(modules_tid)) modules_periodic_task(); if (sys_time_check_and_ack_timer(radio_control_tid)) radio_control_periodic_task(); if (sys_time_check_and_ack_timer(failsafe_tid)) failsafe_check(); if (sys_time_check_and_ack_timer(electrical_tid)) electrical_periodic(); if (sys_time_check_and_ack_timer(baro_tid)) baro_periodic(); if (sys_time_check_and_ack_timer(telemetry_tid)) telemetry_periodic(); }
void nps_autopilot_run_step(double time __attribute__ ((unused))) { if (nps_radio_control_available(time)) { radio_control_feed(); main_event(); } if (nps_sensors_gyro_available()) { imu_feed_gyro_accel(); main_event(); } if (nps_sensors_mag_available()) { imu_feed_mag(); main_event(); } if (nps_sensors_baro_available()) { baro_feed_value(sensors.baro.value); main_event(); } if (nps_sensors_gps_available()) { booz_gps_feed_value(); main_event(); } if (nps_bypass_ahrs) { sim_overwrite_ahrs(); } main_periodic(); if (time < 8) { /* start with a little bit of hovering */ int32_t init_cmd[4]; init_cmd[COMMAND_THRUST] = 0.253*SUPERVISION_MAX_MOTOR; init_cmd[COMMAND_ROLL] = 0; init_cmd[COMMAND_PITCH] = 0; init_cmd[COMMAND_YAW] = 0; supervision_run(TRUE, FALSE, init_cmd); } for (uint8_t i=0; i<ACTUATORS_MKK_NB; i++) autopilot.commands[i] = (double)supervision.commands[i] / SUPERVISION_MAX_MOTOR; }
STATIC_INLINE void handle_periodic_tasks(void) { if (sys_time_check_and_ack_timer(main_periodic_tid)) { main_periodic(); } if (sys_time_check_and_ack_timer(modules_tid)) { modules_periodic_task(); } if (sys_time_check_and_ack_timer(radio_control_tid)) { radio_control_periodic_task(); } if (sys_time_check_and_ack_timer(electrical_tid)) { electrical_periodic(); } if (sys_time_check_and_ack_timer(telemetry_tid)) { telemetry_periodic(); } }
int main(void) { mcu_init(); sys_time_register_timer((1./PERIODIC_FREQUENCY), NULL); /* init RCC */ RCC_APB2PeriphClockCmd(A_PERIPH , ENABLE); // RCC_APB2PeriphClockCmd(B_PERIPH , ENABLE); // GPIO_DeInit(A_RX_PORT); /* Init GPIO for rx pins */ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = A_RX_PIN; GPIO_Init(A_RX_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_RX_PIN; GPIO_Init(B_RX_PORT, &GPIO_InitStructure); /* Init GPIO for tx pins */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = A_TX_PIN; GPIO_Init(A_TX_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_TX_PIN; GPIO_Init(B_TX_PORT, &GPIO_InitStructure); A_TX_PORT->BRR = A_TX_PIN; /* */ while (1) { if (sys_time_check_and_ack_timer(0)) main_periodic(); main_event(); } return 0; }
int main(void) { hw_init(); sys_time_init(); /* init RCC */ RCC_APB2PeriphClockCmd(A_PERIPH , ENABLE); // RCC_APB2PeriphClockCmd(B_PERIPH , ENABLE); // GPIO_DeInit(A_RX_PORT); /* Init GPIO for rx pins */ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = A_RX_PIN; GPIO_Init(A_RX_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_RX_PIN; GPIO_Init(B_RX_PORT, &GPIO_InitStructure); /* Init GPIO for tx pins */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = A_TX_PIN; GPIO_Init(A_TX_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = B_TX_PIN; GPIO_Init(B_TX_PORT, &GPIO_InitStructure); A_TX_PORT->BRR = A_TX_PIN; /* */ while (1) { if (sys_time_periodic()) main_periodic(); main_event(); }; return 0; }