int main() { init_led(); init_button(); enable_button_interrupts(); init_rs232(); enable_rs232_interrupts(); enable_rs232(); /* Create the queue used by the serial task. Messages for write to * the RS232. */ serial_str_queue = xQueueCreate(10, sizeof(serial_str_msg)); vSemaphoreCreateBinary(serial_tx_wait_sem); serial_rx_queue = xQueueCreate(1, sizeof(serial_ch_msg)); // queue_str_task1 = queue_str_task2 = serial_readwrite_task > rs232_xmit_msg_task // // // // queue_str_task1 -> // queue_str_task2 -> // -> [serial_str_queue] -> rs232_xmit_msg_task // isr -> [serial_rx_queue] -> serial_readwrite_task:receive_byte // // ----------> // // rs232_xmit_msg_task:send_byte -> <serial_tx_wait_sem> -> isr(complete) // /* Create tasks to queue a string to be written to the RS232 port. */ xTaskCreate(queue_str_task1, (signed portCHAR *) "Serial Write 1", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 10, NULL ); xTaskCreate(queue_str_task2, (signed portCHAR *) "Serial Write 2", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 10, NULL); /* Create a task to write messages from the queue to the RS232 port. */ xTaskCreate(rs232_xmit_msg_task, (signed portCHAR *) "Serial Xmit Str", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 2, NULL); /* Create a task to receive characters from the RS232 port and echo * them back to the RS232 port. */ xTaskCreate(serial_readwrite_task, (signed portCHAR *) "Serial Read/Write", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 10, NULL); /* Start running the tasks. */ vTaskStartScheduler(); return 0; }
int main(void) { init_led(); init_button(); enable_button_interrupts(); init_rs232(); enable_rs232_interrupts(); enable_rs232(); /* Create the queue to hold messages to be written to the RS232. */ serial_str_queue = xQueueCreate( 10, sizeof( serial_str_msg ) ); vSemaphoreCreateBinary(serial_tx_wait_sem); serial_rx_queue = xQueueCreate( 1, sizeof( serial_ch_msg ) ); /* Create a task to flash the LED. */ xTaskCreate( led_flash_task, ( signed portCHAR * ) "LED Flash", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 5, NULL ); /* Create tasks to queue a string to be written to the RS232 port. */ xTaskCreate( queue_str_task1, ( signed portCHAR * ) "Serial Write 1", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 10, NULL ); xTaskCreate( queue_str_task2, ( signed portCHAR * ) "Serial Write 2", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 10, NULL ); /* Create a task to write messages from the queue to the RS232 port. */ xTaskCreate(rs232_xmit_msg_task, ( signed portCHAR * ) "Serial Xmit Str", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 2, NULL ); /* Create a task to receive characters from the RS232 port and echo them back to the RS232 port. */ xTaskCreate(serial_readwrite_task, ( signed portCHAR * ) "Serial Read/Write", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 10, NULL ); /* Start running the tasks. */ vTaskStartScheduler(); return 0; }
int main(void) { init_led(); init_button(); enable_button_interrupts(); while(1) { /* Generate a software interrupt on EXTI line 0 */ EXTI_GenerateSWInterrupt(EXTI_Line0); myDelay(500000); } }