void test_task ( uint_32 initial_data ) { MQX_TICK_STRUCT ticks; _mqx_uint result; _mqx_uint n; _time_init_ticks(&ticks, 10); result = _watchdog_create_component(BSP_TIMER_INTERRUPT_VECTOR, handle_watchdog_expiry); if (result != MQX_OK) { printf("\nError creating watchdog component."); _task_block(); } n = 100; while (TRUE) { result = _watchdog_start_ticks(&ticks); n = waste_time(n); _watchdog_stop(); printf("\n %d", n); } }
uint32_t _kuart_mix_init ( /* [IN] the interrupt I/O initialization information */ IO_SERIAL_INT_DEVICE_STRUCT_PTR int_io_dev_ptr, /* [IN] the rest of the name of the device opened */ char * open_name_ptr ) { /* Body */ KUART_INFO_STRUCT_PTR sci_info_ptr; KUART_INIT_STRUCT_PTR sci_init_ptr; uint32_t result = MQX_OK; //Init basic uart setting sci_init_ptr = int_io_dev_ptr->DEV_INIT_DATA_PTR; result = _kuart_polled_init((void *)sci_init_ptr, &int_io_dev_ptr->DEV_INFO_PTR, open_name_ptr); if (result != MQX_OK) { return(result); }/* Endif */ sci_info_ptr = int_io_dev_ptr->DEV_INFO_PTR; sci_info_ptr->RX_KEEP = 1; /* Add a timer config to check the UART RX state */ sci_info_ptr->LW_TIMER_PTR = (LWTIMER_PERIOD_STRUCT_PTR)_mem_alloc_system_zero(sizeof(LWTIMER_PERIOD_STRUCT) + sizeof(LWTIMER_STRUCT)); if (!sci_info_ptr->LW_TIMER_PTR) { result = MQX_OUT_OF_MEMORY; goto error_free_timer; } sci_info_ptr->LW_TIMER = (LWTIMER_STRUCT_PTR)((uint8_t *)sci_info_ptr->LW_TIMER_PTR + sizeof(LWTIMER_PERIOD_STRUCT)); _time_init_ticks(&sci_info_ptr->ticks, 1); _lwtimer_create_periodic_queue(sci_info_ptr->LW_TIMER_PTR ,*(uint32_t *)(&sci_info_ptr->ticks), 0); _lwtimer_add_timer_to_queue( sci_info_ptr->LW_TIMER_PTR, sci_info_ptr->LW_TIMER, 0, _kuart_period_isr, (void *)int_io_dev_ptr); /* RX DMA setting */ sci_info_ptr->RX_BUF = _mem_alloc_system_zero_uncached(sci_init_ptr->IQUEUE_SIZE); sci_info_ptr->RX_ACTIVE = sci_info_ptr->RX_BUF; if (!sci_info_ptr->RX_BUF) { result = MQX_OUT_OF_MEMORY; goto error_free_buf; } sci_info_ptr->RX_DMA_CHAN = sci_init_ptr->RX_DMA_CHANNEL; sci_info_ptr->RX_DMA_HARDWARE_REQUEST = _bsp_get_serial_rx_dma_request(sci_init_ptr->DEVICE); #if PSP_MQX_CPU_IS_KINETIS sci_info_ptr->ERR_INT = _bsp_get_serial_error_int_num(sci_init_ptr->DEVICE); #endif sci_info_ptr->RX_DMA_SEQ = 0; result = dma_channel_claim(&sci_info_ptr->RX_DCH, sci_info_ptr->RX_DMA_CHAN); if (result != MQX_OK) { goto error_free_channel; } result = dma_callback_reg(sci_info_ptr->RX_DCH, _kuart_dma_rx_isr, int_io_dev_ptr); dma_channel_setup(sci_info_ptr->RX_DCH, 1, DMA_CHANNEL_FLAG_LOOP_MODE); dma_request_source(sci_info_ptr->RX_DCH, sci_info_ptr->RX_DMA_HARDWARE_REQUEST); if (result != MQX_OK) { goto error_free_channel; } /* Init RX/TX interrupt vector */ sci_info_ptr->OLD_ISR_TXRX_DATA = _int_get_isr_data(sci_init_ptr->RX_TX_VECTOR); sci_info_ptr->OLD_ISR_EXCEPTION_HANDLER = _int_get_exception_handler(sci_init_ptr->RX_TX_VECTOR); sci_info_ptr->OLD_ISR_TXRX = _int_install_isr(sci_init_ptr->RX_TX_VECTOR, _kuart_mix_int_tx_isr, int_io_dev_ptr); _bsp_int_init(sci_init_ptr->RX_TX_VECTOR, sci_init_ptr->RX_TX_PRIORITY, 0, TRUE); /* Init mix error vector */ sci_info_ptr->OLD_ISR_ERR = _int_install_isr(sci_info_ptr->ERR_INT, _kuart_mix_err_isr, int_io_dev_ptr); _bsp_int_init(sci_info_ptr->ERR_INT, sci_init_ptr->ERR_PRIORITY, 0, TRUE); /* config the UART RX channel first */ _kuart_prepare_rx_dma(int_io_dev_ptr); return(MQX_OK); error_free_timer: if (!sci_info_ptr->LW_TIMER_PTR) _mem_free(sci_info_ptr->LW_TIMER_PTR); error_free_channel: dma_channel_release(sci_info_ptr->RX_DCH); error_free_buf: if (sci_info_ptr->RX_BUF) _mem_free(sci_info_ptr->RX_BUF); return result; } /* Endbody */