新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2019-11-20
- 在线时间
- 2 小时
|
4金钱
本帖最后由 吕彦朋 于 2019-11-25 21:14 编辑
最近在用ERF32的蓝牙板子搞ucosiii的开发:
两个线程:
高优先级线程向队列发送数据。
低优先级线程接收数据。
发送数据到线程时一直提示err code 17。如果把两个线程的优先级改成一样的就没问题。
求助大家是否有思路。
- OSTaskCreate(&App_Task_test, /* Create the Start Task. */
- "Thermometer Task",
- App_Task_test_void,
- 0,
- APP_CFG_TASK_THERMOMETER_PRIO+2,
- &App_test[0],
- (APP_TEST_SIZE / 10u),
- APP_TEST_SIZE,
- 0,
- 0,
- 0,
- (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
- &err);
复制代码- OSTaskCreate(&App_TaskThermometerTCB, /* Create the Start Task. */
- "Thermometer Task",
- App_TaskThermometer,
- 0,
- APP_CFG_TASK_THERMOMETER_PRIO+3,
- &App_TaskThermometerStk[0],
- (APP_CFG_TASK_THERMOMETER_STK_SIZE / 10u),
- APP_CFG_TASK_THERMOMETER_STK_SIZE,
- 0,
- 0,
- 0,
- (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
- &err);
复制代码 下面是创建队列
- CORE_DECLARE_IRQ_STATE;
- CPU_CRITICAL_ENTER();
- RTOS_ERR err;
- OSQCreate(&test_Queue,"test_Queue",50,&err);
- APP_ERROR_CHECK_BOOL(RTOS_ERR_CODE_GET(err) == RTOS_ERR_NONE);
- CPU_CRITICAL_EXIT();
复制代码 下面是发送到队列和接收队列
- static uint8_t data_t = 1;
- void test_q_t(void)
- {
- #if 1
- RTOS_ERR err;
- data_t++;
- LOG(LEVEL_DEBUG, "---t = %d", data_t);
- OSQPost((OS_Q*)&test_Queue, (void*)&data_t, (OS_MSG_SIZE)1, (OS_OPT)OS_OPT_POST_FIFO, (RTOS_ERR*)&err);
- LOG(LEVEL_DEBUG, "---err Code = %d", err.Code);
- #endif
- }
- static char *recv_data = NULL;
- void test_q_r(void)
- {
- #if 1
- RTOS_ERR err;
- OS_MSG_SIZE recv_size = 1;
- recv_data = OSQPend(&test_Queue, 0, OS_OPT_PEND_BLOCKING,&recv_size,NULL,&err);
- LOG(LEVEL_DEBUG, "---r = %d", *recv_data);
- #endif
- }
复制代码
|
|