新手上路
- 积分
- 29
- 金钱
- 29
- 注册时间
- 2019-7-4
- 在线时间
- 8 小时
|
1金钱
从历程移植的,创建三个系统能运行,多一个就不运行了- // 开始任务 任务优先级
- #define START_TASK_PRIO 1
- //任务堆栈大小
- #define START_STK_SIZE 512
- //任务句柄
- TaskHandle_t StartTask_Handler;
- //任务函数
- void start_task(void *pvParameters);
- // LED 任务优先级
- #define LED0_TASK_PRIO 2
- //任务堆栈大小
- #define LED0_STK_SIZE 50
- //任务句柄
- TaskHandle_t LED0Task_Handler;
- //任务函数
- void led0_task(void *pvParameters);
- // 任务优先级
- #define PID_TASK_PRIO 3
- //任务堆栈大小
- #define PID_STK_SIZE 256
- //任务句柄
- TaskHandle_t PIDTask_Handler;
- //任务函数
- void pid_task(void *pvParameters);
- // 串口2 任务优先级
- #define UART2_TASK_PRIO 4
- //任务堆栈大小
- #define UART2_STK_SIZE 256
- //任务句柄
- TaskHandle_t UART2Task_Handler;
- //任务函数
- void uart2_task(void *pvParameters);
- /**
- * 函数功能: 主函数.
- * 输入参数: 无
- * 返 回 值: 无
- * 说 明: 无
- */
- int main(void)
- {
- /* 复位所有外设,初始化Flash接口和系统滴答定时器 */
- HAL_Init();
- /* 配置系统时钟 */
- SystemClock_Config();
-
- /* 初始化IO口配置 */
- MX_GPIO_Init();
-
- Power_Control(1,1);
-
- Power_Control(4,1);
-
- MX_CAN_Init();
- HAL_CAN_Receive_IT(&hCAN, CAN_FIFO0);
-
- MX_USARTx_Init();
- /* 使能接收,进入中断回调函数 */
- HAL_UART_Receive_IT(&husartx,&aRxBuffer,1);
-
- /* 初始化定时器配置 */
- BASIC_TIMx_Init();
- HAL_TIM6_Base_Start();
-
- //创建开始任务
- xTaskCreate((TaskFunction_t )start_task, //任务函数
- (const char* )"start_task", //任务名称
- (uint16_t )START_STK_SIZE, //任务堆栈大小
- (void* )NULL, //传递给任务函数的参数
- (UBaseType_t )START_TASK_PRIO, //任务优先级
- (TaskHandle_t* )&StartTask_Handler); //任务句柄
-
- vTaskStartScheduler(); //开启任务调度
-
- }
- /* 函数体 --------------------------------------------------------------------*/
- //开始任务任务函数
- void start_task(void *pvParameters)
- {
- taskENTER_CRITICAL(); //进入临界区
-
- //创建LED0任务
- xTaskCreate((TaskFunction_t )led0_task,
- (const char* )"led0_task",
- (uint16_t )LED0_STK_SIZE,
- (void* )NULL,
- (UBaseType_t )LED0_TASK_PRIO,
- (TaskHandle_t* )&LED0Task_Handler);
-
- xTaskCreate((TaskFunction_t )pid_task,
- (const char* )"pid_task",
- (uint16_t )PID_STK_SIZE,
- (void* )NULL,
- (UBaseType_t )PID_TASK_PRIO,
- (TaskHandle_t* )&PIDTask_Handler);
-
- //创建UART任务
- xTaskCreate((TaskFunction_t )uart2_task,
- (const char* )"uart2_task",
- (uint16_t )UART2_STK_SIZE,
- (void* )NULL,
- (UBaseType_t )UART2_TASK_PRIO,
- (TaskHandle_t* )&UART2Task_Handler);
-
-
- vTaskDelete(StartTask_Handler); //删除开始任务
-
- taskEXIT_CRITICAL(); //退出临界区
- }
- //LED0任务函数
- void led0_task(void *pvParameters)
- {
- while(1)
- {
- Led_1_Control(-1);
- vTaskDelay(500);
- }
- }
- void pid_task(void *pvParameters)
- {
- while(1)
- {
- Led_2_Control(-1);
- vTaskDelay(500);
- }
- }
- //uart2任务函数
- void uart2_task(void *pvParameters)
- {
- while(1)
- {
- if(RxBuf_Ok == 1 )
- {
- switch(Checkbuf[2])
- {
- case 0x01://motor_reset();
- break;
- case 0x02://motor_set_pid_normal(); //开机默认模式
- break;
- case 0x03://motor_set_pid_para(1.5,0.1);
- break;
- case 0x04://if(pid_run == 1)
- {
- speed_one.data_8[0] = Checkbuf[4];
- speed_one.data_8[1] = Checkbuf[5];
- speed_two.data_8[0] = Checkbuf[6];
- speed_two.data_8[1] = Checkbuf[7];
- //motor_set_pid_speed(speed_one.data_16,speed_two.data_16);
- }
- break;
- case 0x05: //pid_run = 2;
- break;
- case 0x06: //if(pid_run == 2)
- {
- cur_one.data_8[0] = Checkbuf[4];
- cur_one.data_8[1] = Checkbuf[5];
- cur_two.data_8[0] = Checkbuf[6];
- cur_two.data_8[1] = Checkbuf[7];
- // set_cur[0] = cur_one.data_16;
- // set_cur[1] = cur_two.data_16;
- //motor_set_cur(cur_one.data_16,cur_two.data_16);
- }
- break;
- };
- RxBuf_Ok = 0;
- }
- // Led_2_Control(-1);
- // vTaskDelay(500);
- }
- }
复制代码 config里面是这样的
堆栈我已经改到了很大了,哪位大神帮忙指点一下啊!!!!!
|
|