|
发表于 2021-5-11 09:03:34
|
显示全部楼层
对,没有使用这个,并不觉得方便。
官方的玩法是这样:
- /* Define what the initial system looks like. */
- void tx_application_define(void *first_unused_memory)
- {
- CHAR *pointer = TX_NULL;
- /* Create a byte memory pool from which to allocate the thread stacks. */
- tx_byte_pool_create(&byte_pool_0, "byte pool 0", memory_area, DEMO_BYTE_POOL_SIZE);
- /* Put system definition stuff in here, e.g. thread creates and other assorted
- create information. */
- /* Allocate the stack for thread 0. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- /* Create the main thread. */
- tx_thread_create(&thread_0, "thread 0", thread_0_entry, 0,
- pointer, DEMO_STACK_SIZE,
- 1, 1, TX_NO_TIME_SLICE, TX_AUTO_START);
- /* Allocate the stack for thread 1. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- /* Create threads 1 and 2. These threads pass information through a ThreadX
- message queue. It is also interesting to note that these threads have a time
- slice. */
- tx_thread_create(&thread_1, "thread 1", thread_1_entry, 1,
- pointer, DEMO_STACK_SIZE,
- 16, 16, 4, TX_AUTO_START);
- /* Allocate the stack for thread 2. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- tx_thread_create(&thread_2, "thread 2", thread_2_entry, 2,
- pointer, DEMO_STACK_SIZE,
- 16, 16, 4, TX_AUTO_START);
- /* Allocate the stack for thread 3. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- /* Create threads 3 and 4. These threads compete for a ThreadX counting semaphore.
- An interesting thing here is that both threads share the same instruction area. */
- tx_thread_create(&thread_3, "thread 3", thread_3_and_4_entry, 3,
- pointer, DEMO_STACK_SIZE,
- 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
- /* Allocate the stack for thread 4. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- tx_thread_create(&thread_4, "thread 4", thread_3_and_4_entry, 4,
- pointer, DEMO_STACK_SIZE,
- 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
- /* Allocate the stack for thread 5. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- /* Create thread 5. This thread simply pends on an event flag which will be set
- by thread_0. */
- tx_thread_create(&thread_5, "thread 5", thread_5_entry, 5,
- pointer, DEMO_STACK_SIZE,
- 4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
- /* Allocate the stack for thread 6. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- /* Create threads 6 and 7. These threads compete for a ThreadX mutex. */
- tx_thread_create(&thread_6, "thread 6", thread_6_and_7_entry, 6,
- pointer, DEMO_STACK_SIZE,
- 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
- /* Allocate the stack for thread 7. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_STACK_SIZE, TX_NO_WAIT);
- tx_thread_create(&thread_7, "thread 7", thread_6_and_7_entry, 7,
- pointer, DEMO_STACK_SIZE,
- 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START);
- /* Allocate the message queue. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_QUEUE_SIZE*sizeof(ULONG), TX_NO_WAIT);
- /* Create the message queue shared by threads 1 and 2. */
- tx_queue_create(&queue_0, "queue 0", TX_1_ULONG, pointer, DEMO_QUEUE_SIZE*sizeof(ULONG));
- /* Create the semaphore used by threads 3 and 4. */
- tx_semaphore_create(&semaphore_0, "semaphore 0", 1);
- /* Create the event flags group used by threads 1 and 5. */
- tx_event_flags_create(&event_flags_0, "event flags 0");
- /* Create the mutex used by thread 6 and 7 without priority inheritance. */
- tx_mutex_create(&mutex_0, "mutex 0", TX_NO_INHERIT);
- /* Allocate the memory for a small block pool. */
- tx_byte_allocate(&byte_pool_0, (VOID **) &pointer, DEMO_BLOCK_POOL_SIZE, TX_NO_WAIT);
- /* Create a block memory pool to allocate a message buffer from. */
- tx_block_pool_create(&block_pool_0, "block pool 0", sizeof(ULONG), pointer, DEMO_BLOCK_POOL_SIZE);
- /* Allocate a block and release the block memory. */
- tx_block_allocate(&block_pool_0, (VOID **) &pointer, TX_NO_WAIT);
- /* Release the block back to the pool. */
- tx_block_release(pointer);
- }
复制代码
|
|