static void event(void) { #if MQX_USE_EVENTS IF_TINIEST(pointer handle=0); IF_TINIEST(_mqx_uint value=0); IF_SMALL(_event_create_component(1, 1, 1)); IF_SMALL(_event_create_fast(1)); IF_SMALL(_event_create_fast_auto_clear(1)); IF_SMALL(_event_open("e", &handle)); IF_SMALL(_event_set(handle, 0)); IF_SMALL(_event_clear(handle, 0)); IF_SMALL(_event_wait_all(handle, 0, 0)); IF_TYPICAL(_event_close(handle)); IF_TYPICAL(_event_create("e")); IF_MAX(_event_create_auto_clear("e")); IF_TYPICAL(_event_destroy("e")); IF_MAX(_event_destroy_fast(1)); IF_MAX(_event_get_value(handle, &value)); IF_MAX(_event_get_wait_count(handle)); IF_MAX(_event_open_fast(1, &handle)); IF_MAX(_event_test(&handle)); IF_MAX(_event_wait_all_for(handle, 0, NULL)); IF_TYPICAL(_event_wait_all_ticks(handle, 0, 0)); IF_MAX(_event_wait_all_until(handle, 0, NULL)); IF_MAX(_event_wait_any(handle, 0, 0)); IF_MAX(_event_wait_any_for(handle, 0, NULL)); IF_TYPICAL(_event_wait_any_ticks(handle, 0, 0)); IF_MAX(_event_wait_any_until(handle, 0, NULL)); #endif }
void EventB ( uint32_t parameter ) { _mqx_uint event_result; void *Event1_handle; /* open connection to event event.Event1 */ event_result = _event_open("event.Event1",&Event1_handle); if (event_result != MQX_OK) { /* could not open event.Event1 */ } /* endif */ /* ** LOOP - */ while ( TRUE ) { /* wait on event event.Event1 */ event_result = _event_wait_all_ticks(Event1_handle, 1, NO_TIMEOUT); if (event_result != MQX_OK) { /* waiting on event event.Event1 failed */ } /* clear the event bits after processing event */ event_result = _event_clear(Event1_handle, 1); } /* endwhile */ } /*end of task*/
/* pin2 int callback function */ void int_callback(void) { pointer ppin2_event; _event_open("pin2_event",&ppin2_event); _event_set(ppin2_event,0x04); printf("Switch2 is pressed(int mode)!\n"); }
void simulated_ISR_task ( uint32_t initial_data ) { void *event_ptr; /* open event connection */ if (_event_open("event.global",&event_ptr) != MQX_OK) { printf("\nOpen Event failed"); _task_block(); } while (TRUE) { _time_delay_ticks(200); if (_event_set(event_ptr,0x01) != MQX_OK) { printf("\nSet Event failed"); _task_block(); } } }
void service_task ( uint32_t initial_data ) { void *event_ptr; _task_id second_task_id; /* Set up an event group */ if (_event_create("event.global") != MQX_OK) { printf("\nMake event failed"); _task_block(); } if (_event_open("event.global", &event_ptr) != MQX_OK) { printf("\nOpen event failed"); _task_block(); } /* Create the ISR task */ second_task_id = _task_create(0, ISR_TASK, 0); if (second_task_id == MQX_NULL_TASK_ID) { printf("Could not create simulated_ISR_task \n"); _task_block(); } while (TRUE) { if (_event_wait_all_ticks(event_ptr, 0x01, 0) != MQX_OK) { printf("\nEvent Wait failed"); _task_block(); } if (_event_clear(event_ptr,0x01) != MQX_OK) { printf("\nEvent Clear failed"); _task_block(); } printf(" Tick \n"); } }
/******************************************************************************* ** Function Name :uart_isr ** Input : ** Return : ** Author :wk ** Version : ** Date : ** Dessription : ** Reverse : *******************************************************************************/ void uart_isr(pointer parameter) { #if 1 // wk --> 在有些工程中没有定义read_buf[]和LCDTouchSel() --> 0 else --> 1 /* Body */ IO_SERIAL_INT_DEVICE_STRUCT_PTR int_io_dev_ptr = parameter; KUART_INFO_STRUCT_PTR sci_info_ptr = int_io_dev_ptr->DEV_INFO_PTR; UART_MemMapPtr sci_ptr = sci_info_ptr->SCI_PTR; /* ** author: wk @2012-10-03 ** description: 和上面三行的功能相同 */ // UART_MemMapPtr sci_ptr; // sci_ptr=(UART_MemMapPtr)UART4_BASE_PTR; //wk volatile int_32 c; /* try if RX buffer has some characters */ #if 0 // wk _system if (sci_ptr->S1 & UART_S1_RDRF_MASK) { c = sci_ptr->D; // printf("c=%x\n",c); if (!_io_serial_int_addc(int_io_dev_ptr, c)) { sci_info_ptr->RX_DROPPED_INPUT++; } sci_info_ptr->RX_CHARS++; } #endif #if 1 // wk --> data rec static uchar i=0,flag=0; // do { if (sci_ptr->S1 & UART_S1_RDRF_MASK) { c = sci_ptr->D; if(c == 0xaa || flag==1) //第一个数据是 0xaa 开始标志才开始接收 { read_buffer[i++]= c ; flag=1; } if (!_io_serial_int_addc(int_io_dev_ptr, c)) { sci_info_ptr->RX_DROPPED_INPUT++; } sci_info_ptr->RX_CHARS++; } } // while(c != 0x3c); #endif // wk --< data rec #define UART_EVENTTEST 1 #if !UART_EVENTTEST if(i == 8) { i=0;flag=0; LCDTouchSel(); // 触摸屏按键判断程序 } #endif // !UART_EVENTTEST #if UART_EVENTTEST if(i == 8) { i=0;flag=0; pointer puart_event; #ifdef _UART_DBUG_ if(_event_open("uart_event",&puart_event) != MQX_OK) { printf("\n Open event failed of serl_int_kuart.c"); } else printf("\n Open event OK of serl_int_kuart.c"); if (_event_set(puart_event,0x01) != MQX_OK) { printf("\n Set Event failed of serl_int_kuart.c"); } else printf("\n Set Event OK of serl_int_kuart.c"); #endif #ifndef _UART_DBUG_ _event_open("uart_event",&puart_event); _event_set(puart_event,0x01); #endif } #endif // UART_EVENTTEST #endif }