前两天把官方的FreeRTOS+LWIP移植到紫的板子上,用起来没问题了,我在板子上添加程序的时候就除了问题了
我首先初始化Flash-上电之后就读取Flash中的数据,数据是保存的硬件版本信息和软件版本信息的,只是读取操作,此时还没有进入到RTOS的任务调度函数,其他任务还没有初始化,
之后就是开始初始化LWIP的任务,但是任务初始化完成之后,进入调度程序之后就开始进hardfult中断了,屏蔽掉flash 操作,整个系统没为题,屏蔽掉掉LWIP的任务,是正常的,两个子程序单独运行,都没有问题,合并起来就有问题了,具体的代码顺序如下:
- /*-------------------------------------------------------------------------------------
- == 函数名 :
- == 描 述 :
- == 输入参数 :
- == 返回值 :
- == 备 注 :
- ---------------------------------------------------------------------------------------
- */
- int main(void)
- {
- /* Configures the priority grouping: 4 bits pre-emption priority */
- // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
- /* Init task */
- System_Flash_Process();//--<font color="#ff0000">Flash 操作的函数</font>
- DRV_IO_Init();//--输入输出以及端子与引脚的对应关系定义-错误引脚的定义以及对应关系--
- // xTaskCreate(Modbus_RS232_Tasks ,(int8_t *)"Modbus_RS232_Tasks" , 2048 , NULL, RS232_Task_PRIO , NULL);//--
- // xTaskCreate(Modbus_RS485_1_Tasks ,(int8_t *)"Modbus_RS485_1_Tasks" , 2048 , NULL, RS485_1_Task_PRIO , NULL); //--
- // xTaskCreate(Modbus_RS485_2_Tasks ,(int8_t *)"Modbus_RS485_2_Tasks" , 2048 , NULL, RS485_2_Task_PRIO , NULL); //--
- // //--ADC --PWM ---DO --DI --LED -- 报警--
- // xTaskCreate(TaskIO ,(int8_t *)"TaskIO" , 2048 , NULL, IO_TASK_PRIO , NULL); //-- IO --
- // xTaskCreate(ControlLogic ,(int8_t *)"ControlLogic" , 2048 , NULL, CTRL_TASK_PRIO , NULL); //-- IO --
- // xTaskCreate(Flash_RTC_Tasks ,(int8_t *)"Flash_RTC_Tasks" , 2048 , NULL, FLASH_TASK_PRIO , NULL); //-- LED --
- //--<font color="#ff0000">下面是LWIP的官方例程的代码,---就是上文说到的LWIP任务</font>
- xTaskCreate(Main_task ,(int8_t *) "Main", configMINIMAL_STACK_SIZE * 2, NULL,MAIN_TASK_PRIO, NULL);
- /* Start scheduler */
- vTaskStartScheduler();
- /* We should never get here as control is now taken by the scheduler */
- while(1)
- {
- IO_OutPutBitCTR(IO_Ch_22,IO_ON);//--控制器故障-输出控制--
- }
- }
复制代码
求各位大佬指导一下。
|
评分
查看全部评分
请问一下,目标文件跟代码不一致?这个能够给我解释一下么?
是指你下载到板子上用来调试的HEX文件,不是你当前的源文件编译出来的。重新编译一下,再debug调试
这个文件就是最新的文件,每次都是rebuld的,文件没有问题。