/*************************************************************************************************************************** **************************************************************************************************************************** MAIN PROGRAM **************************************************************************************************************************** ***************************************************************************************************************************/ int main(void) { NP2_boardinit(); Hardware_init(); Hardware_PWM_init(); /* Initilaize the LwIP stack */ LwIP_Init(); /* Create all tasks */ xTaskCreate( (void *) &PanTiltTask, (const signed char *) "PanTilt", PANTILTTASK_STACK_SIZE, NULL, PANTILTTASK_PRIORITY, &xPanTiltTask); xTaskCreate( (void *) &DistanceTask, (const signed char *) "Dist", DISTANCETASK_STACK_SIZE, NULL, DISTANCETASK_PRIORITY, &xDistanceTask); xTaskCreate( (void *) &CLITask, (const signed char *) "CLI", CLI_TASK_STACK_SIZE, NULL, CLI_PRIORITY, &xCLITask); /* Register all CMDs */ FreeRTOS_CLIRegisterCommand(&xTaskUsage); FreeRTOS_CLIRegisterCommand(&xEncode); FreeRTOS_CLIRegisterCommand(&xDecode); FreeRTOS_CLIRegisterCommand(&xLaser); FreeRTOS_CLIRegisterCommand(&xDistance); FreeRTOS_CLIRegisterCommand(&xTracking); /* Start scheduler */ vTaskStartScheduler(); return 0; }
/** * @brief Main program - enable D0 external interrupt. * @param None * @retval None */ void main(void) { NP2_boardinit(); //Initalise NP2 Hardware_init(); //Initalise hardware modules /* Main processing loop waiting for interrupt */ while (1) { } }
void main(void) { BRD_init(); Hardware_init(); /* Start the task to flash the LED. */ xTaskCreate( (void *) &Main_Task, (const signed char *) "LED", mainLED_TASK_STACK_SIZE, NULL, mainLED_PRIORITY, NULL ); xTaskCreate( (void *) &Tracks_Task, (const signed char *) "TRA", mainLED_TASK_STACK_SIZE, NULL, mainLED_PRIORITY, NULL ); vTaskStartScheduler(); }
/** * @brief Main program * @param None * @retval None */ void main(void) { NP2_boardinit(); //Initalise NP2 Hardware_init(); //Initalise hardware modules while (1) { NP2_LEDToggle(); //Toggle 'Alive' LED on/off Delay(0x7FFF00); //Delay function } }
/** * @brief Starts all the other tasks, then starts the scheduler. * @param None * @retval None */ int main( void ) { BRD_init(); Hardware_init(); /* Start the three tasks. */ xTaskCreate( (void *) &Task1_Task, (const signed char *) "TASK1", mainTASK1_TASK_STACK_SIZE, NULL, mainTASK1_PRIORITY, NULL ); xTaskCreate( (void *) &Task2_Task, (const signed char *) "TASK2", mainTASK2_TASK_STACK_SIZE, NULL, mainTASK2_PRIORITY, NULL ); xTaskCreate( (void *) &Task3_Task, (const signed char *) "TASK3", mainTASK3_TASK_STACK_SIZE, NULL, mainTASK3_PRIORITY, NULL ); /* Start the scheduler. NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode. The processor MUST be in supervisor mode when vTaskStartScheduler is called. The demo applications included in the FreeRTOS.org download switch to supervisor mode prior to main being called. If you are not using one of these demo application projects then ensure Supervisor mode is used here. */ vTaskStartScheduler(); /* We should never get here as control is now taken by the scheduler. */ return 0; }
void main(void) { BRD_init(); //Initalise NP2 Hardware_init(); HAL_Delay(3000); struct PanTilt pantiltvars; pantilt = &pantiltvars; pantilt->write_angles = 0; pantilt->read_angles = 0; pantilt->set_angle_pan = 0; pantilt->set_angle_tilt = 0; struct Variables variables; vars = &variables; vars->count = 0; vars->bit_half = 1; vars->bit_count = 0; vars->encoded_bit_count = -1; vars->encoded_bit = 0; vars->encoded_char = hamming_byte_encoder('<'); vars->transmit_frequency = 1000; vars->period_multiplyer = ((1.000000/vars->transmit_frequency)*500)*0.998; vars->recieve_element = 0; vars->recieve_flag = 0; Pb_init(); s4353096_radio_setchan(s4353096_chan); s4353096_radio_settxaddress(s4353096_tx_addr); s4353096_radio_setrxaddress(s4353096_rx_addr); while (1) { s4353096_radio_setfsmrx(); s4353096_radio_fsmprocessing(); if (vars->recieve_flag == 1) { manchester_decode(); vars->recieve_flag = 0; } if (mode == S4353096_RADIO) { /*Processes the current fsm state*/ RxChar = debug_getc(); if (RxChar != '\0') { s4353096_keystroke = 1; while(s4353096_keystroke == 1){ if (RxChar == '\r' || s4353096_payload_length == 7) { for (int j = s4353096_payload_length; j < 7; j++) { s4353096_payload_buffer[j] = '-'; } s4353096_radio_fsmcurrentstate = S4353096_IDLE_STATE; s4353096_radio_fsmprocessing(); s4353096_radio_fsmcurrentstate = S4353096_TX_STATE; debug_printf("\n"); /*Compiles the transmit packet. Transmits packet if in TX state*/ s4353096_radio_sendpacket(s4353096_radio_getchan(), s4353096_addr_get, s4353096_payload_buffer); s4353096_radio_fsmprocessing(); s4353096_radio_setfsmrx(); s4353096_radio_fsmprocessing(); s4353096_payload_length = 0; s4353096_keystroke = 0; } else if (RxChar != '\0') { s4353096_payload_buffer[s4353096_payload_length] = RxChar; s4353096_payload_length++; debug_putc(RxChar); //reflect byte using putc - puts character into buffer debug_flush(); //Must call flush, to send character //reflect byte using printf - must delay before calling printf again. } else { } HAL_Delay(125); RxChar = debug_getc(); } } else { } s4353096_radio_fsmprocessing(); if (s4353096_radio_getrxstatus() == 1) { //Checks if packet has been recieved /*Prints recieved packet to console*/ s4353096_radio_getpacket(s4353096_rx_buffer); } else { } } if (pantilt->write_angles == 1) { s4353096_pantilt_angle_write(1, pantilt->set_angle_pan); s4353096_pantilt_angle_write(0, pantilt->set_angle_tilt); pantilt->write_angles = 0; } if (((HAL_GetTick()/10000) % 100) == 0) { debug_printf("\nPan: %d Tlit: %d\n", pantilt->set_angle_pan, pantilt->set_angle_tilt); } if (pantilt->read_angles == 1) { /*Delay for 1 second or setup to delay for 0.2 seconds and set angle to += or -= 1 each time*/ if (mode == S4353096_JOYSTICK) { y_value = s4353096_joystick_y_read(); if ((y_value > 2500) && (pantilt->set_angle_pan < 76)) { pantilt->set_angle_pan += 1; } else if ((y_value < 1550) && (pantilt->set_angle_pan > -76)) { pantilt->set_angle_pan -= 1; } else { //Joystick is stationary, no input } x_value = s4353096_joystick_x_read(); if ((x_value > 2500) && (pantilt->set_angle_tilt < 76)) { pantilt->set_angle_tilt += 1; } else if ((x_value < 1550) && (pantilt->set_angle_tilt > -76)) { pantilt->set_angle_tilt -= 1; } else { } } else if (mode == S4353096_TERMINAL) { /* Receive characters using getc */ RxChar = debug_getc(); /* Check if character is not Null */ if (RxChar != '\0') { switch (RxChar) { case 'w': pantilt->set_angle_tilt += 1; break; case 's': pantilt->set_angle_tilt -= 1; break; case 'a': pantilt->set_angle_pan += 1; break; case 'd': pantilt->set_angle_pan -= 1; break; case 't': mode = S4353096_LASER_TRANSMIT; break; default: break; } debug_flush(); } s4353096_terminal_angle_check(); } pantilt->read_angles = 0; } } }