/*! \brief Main function. Execution starts here. * * \retval 42 Fatal error. */ int main(void) { // Configure system clocks. if (pcl_configure_clocks(&pcl_freq_param) != PASS) return 42; // Initialize USB clock (on PLL1) pcl_configure_usb_clock(); // Initialize usart comm init_dbg_rs232(pcl_freq_param.pba_f); #if BOARD == EVK1105 Disable_global_interrupt(); /* Register interrupt handler to the interrupt controller * up, down buttons on PB22, PB23 -> GPIO_IRQ_6 */ INTC_register_interrupt(&touch_button_isr, AVR32_GPIO_IRQ_6, 0); /* all gpios between PB23 - PB31) */ INTC_register_interrupt(&touch_button_isr, AVR32_GPIO_IRQ_7, 0); Enable_global_interrupt(); #endif // Initialize USB task usb_task_init(); #if USB_DEVICE_FEATURE == true // Initialize device mouse USB task device_mouse_hid_task_init(); #endif #if USB_HOST_FEATURE == true //host_keyboard_hid_task_init(); // Initialize host mouse USB task host_mouse_hid_task_init(); #endif #ifdef FREERTOS_USED // Start OS scheduler vTaskStartScheduler(); portDBG_TRACE("FreeRTOS returned."); return 42; #else // No OS here. Need to call each task in round-robin mode. while (true) { usb_task(); #if USB_DEVICE_FEATURE == true device_mouse_hid_task(); #endif #if USB_HOST_FEATURE == true //host_keyboard_hid_task(); host_mouse_hid_task(); #endif } #endif // FREERTOS_USED }
static void x_image_task_init(void) { // Initialize USB task usb_task_init(); #if USB_DEVICE_FEATURE == ENABLED mutexEP_IN = xSemaphoreCreateMutex(); // for co-ordinating multiple tasks using EP IN #if LCD_DISPLAY // Multi-line LCD display vStartTaskLCD(); vStartTaskPowerDisplay(); vStartTaskPushButtonMenu(); #endif vStartTaskMoboCtrl(); // vStartTaskEXERCISE( tskIDLE_PRIORITY ); uac1_AK5394A_task_init(); device_mouse_hid_task_init(UAC1_EP_HID_RX, UAC1_EP_HID_TX); uac1_device_audio_task_init(UAC1_EP_AUDIO_IN, UAC1_EP_AUDIO_OUT, UAC1_EP_AUDIO_OUT_FB); #endif #if LCD_DISPLAY // Multi-line LCD display if ( ! FEATURE_LOG_NONE ) vStartTaskStartupLogDisplay(); #endif }