/* RT-Thread Device Interface */ static rt_err_t rt_serial_init (rt_device_t dev) { struct stm32_serial_device* uart = (struct stm32_serial_device*) dev->user_data; if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED)) { if (dev->flag & RT_DEVICE_FLAG_INT_RX) { rt_memset(uart->int_rx->rx_buffer, 0, sizeof(uart->int_rx->rx_buffer)); uart->int_rx->read_index = 0; uart->int_rx->save_index = 0; } if (dev->flag & RT_DEVICE_FLAG_DMA_TX) { RT_ASSERT(uart->dma_tx->dma_channel != RT_NULL); uart->dma_tx->list_head = uart->dma_tx->list_tail = RT_NULL; /* init data node memory pool */ rt_mp_init(&(uart->dma_tx->data_node_mp), "dn", uart->dma_tx->data_node_mem_pool, sizeof(uart->dma_tx->data_node_mem_pool), sizeof(struct stm32_serial_data_node)); } /* Enable USART */ USART_Cmd(uart->uart_device, ENABLE); dev->flag |= RT_DEVICE_FLAG_ACTIVATED; } return RT_EOK; }
int mempool_simple_init() { int i; for (i = 0; i < 48; i ++) ptr[i] = RT_NULL; /* 初始化内存池对象 */ rt_mp_init(&mp, "mp1", &mempool[0], sizeof(mempool), 80); /* 创建线程1 */ tid1 = rt_thread_create("t1", thread1_entry, RT_NULL, /* 线程入口是thread1_entry, 入口参数是RT_NULL */ THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid1 != RT_NULL) rt_thread_startup(tid1); else tc_stat(TC_STAT_END | TC_STAT_FAILED); /* 创建线程2 */ tid2 = rt_thread_create("t2", thread2_entry, RT_NULL, /* 线程入口是thread2_entry, 入口参数是RT_NULL */ THREAD_STACK_SIZE, THREAD_PRIORITY + 1, THREAD_TIMESLICE); if (tid2 != RT_NULL) rt_thread_startup(tid2); else tc_stat(TC_STAT_END | TC_STAT_FAILED); return 0; }
rt_err_t rt_prio_queue_init(struct rt_prio_queue *que, const char *name, void *buf, rt_size_t bufsz, rt_size_t itemsz) { RT_ASSERT(que); rt_memset(que, 0, sizeof(*que)); rt_list_init(&(que->suspended_pop_list)); rt_mp_init(&que->pool, name, buf, bufsz, sizeof(struct rt_prio_queue_item) + itemsz); que->item_sz = itemsz; return RT_EOK; }
void sbuf_init() { mempool=rt_malloc(MP3_DECODE_MP_SZ); rt_mp_init(&_mp, "mp3", mempool, MP3_DECODE_MP_SZ, MP3_DECODE_MP_BLOCK_SZ * 2); }