|
请教版主,一组数据在任务间如何进行传递?能使用消息队列发送数组的地址吗?例如,一个任务从SPI接口读取了一组数据,这组数据要与另一个任务数据同步,如何用数组地址传递的方式进行呢?
我的程序运行到 - Spi_read_buf(0xc1,pucMsg,41);
复制代码 就会宕机,是什么原因呢?请指教,谢谢。
- #define PoolBlocks 5
- #define PoolPerBlockSize 50
- /* 声明一个内存池,5块,每块大小50字节 */
- _declare_box(mpool, PoolPerBlockSize, PoolBlocks);
- __task void AppTaskRead(void)
- {
- OS_RESULT xResult;
- uint8_t *pucMsg = NULL;//这个指针用于指向待传送的数据数组
- uint8_t i;
- const uint16_t usMaxBlockTime = 0xffff; /* 延迟周期 */
- while(1)
- {
- //这里等待中断发来的事件标志组
- if(os_evt_wait_or(0x01FF, usMaxBlockTime) == OS_R_EVT)
- {
- xResult = os_evt_get ();
- if(xResult == 1)
- {
- /* 申请一个内存块用于8位整形变量 */
- pucMsg = _alloc_box (mpool);
- Spi_read_buf(0xc1,pucMsg,41);
- //读取完之后就使用消息队列发出
- os_mbx_send (&mailbox, pucMsg, 100);
- }
- }
- }
- }
复制代码- void Spi_read_buf(uint8_t add, uint8_t *pBuf, uint8_t num)
- {
- uint8_t i = 0;
- tsk_lock();
- G953_CE_0();
- Spi_RW(add);
- while(i < num)
- pBuf[i++] = Spi_RW(0);
- G953_CE_1();
- tsk_unlock();
- }
复制代码 |
|