void AppMain() { uint32_t i=0; uint32_t speed1=250; uint32_t speed2=500; uint32_t speed3=750; uint32_t speed4=1000; ESC_Init(1,50,5000,6000); ESC_SetChannel(1); ESC_SetChannel(2); ESC_SetChannel(3); ESC_SetChannel(4); while(1) { ESC_SetSpeed(1,speed1); ESC_SetSpeed(2,speed2); ESC_SetSpeed(3,speed3); ESC_SetSpeed(4,speed4); speed1=(speed1+1)%1001; speed2=(speed2+1)%1001; speed3=(speed3+1)%1001; speed4=(speed4+1)%1001; for(i=0; i<1000000; i++); } }
void Idle_Task(void * pvParameters){ int i; for (i=1;i<=4;i++) { ESC_SetChannel(i); ESC_SetSpeed(i,0); } for (;;){ qLedsFlash(2,50); vTaskDelay(500/portTICK_RATE_MS); } }
void ESC_Init(ESC_t *esc, uint16_t pin) { uint16_t Prescaler = GetPrescaler(); esc->pin_number = pin; esc->speed = 0; // devided by 1000000 because ESC data is in the base of us instead of s esc->run_min = (((SystemCoreClock/1000000)/ (2 * Prescaler)) * (ESC_INIT_HIGH)); Delay(500000); ESC_SetSpeed(esc); Delay(2500000); esc->run_min = (((SystemCoreClock/1000000)/ (2 * Prescaler)) * (ESC_RUN_MIN)); esc->run_max = (((SystemCoreClock/1000000)/ (2 * Prescaler)) * (ESC_RUN_MAX)); esc->lift_quad_min = 0; }