xiaoshen-372360 发表于 2018-12-8 22:48:49

STM32+LEIP+RTOS操作Flash进硬中断的问题-求教

前两天把官方的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);//--控制器故障-输出控制--
                }
}

求各位大佬指导一下。



sylar.z 发表于 2018-12-10 16:28:48

调试运行到屏蔽掉的代码处,可能是下载的目标文件跟源码不一致

xiaoshen-372360 发表于 2018-12-11 15:27:56

sylar.z 发表于 2018-12-10 16:28
调试运行到屏蔽掉的代码处,可能是下载的目标文件跟源码不一致

请问一下,目标文件跟代码不一致?这个能够给我解释一下么?

sylar.z 发表于 2018-12-12 08:11:57

xiaoshen-372360 发表于 2018-12-11 15:27
请问一下,目标文件跟代码不一致?这个能够给我解释一下么?

是指你下载到板子上用来调试的HEX文件,不是你当前的源文件编译出来的。重新编译一下,再debug调试

xiaoshen-372360 发表于 2018-12-12 08:44:34

sylar.z 发表于 2018-12-12 08:11
是指你下载到板子上用来调试的HEX文件,不是你当前的源文件编译出来的。重新编译一下,再debug调试 ...

这个文件就是最新的文件,每次都是rebuld的,文件没有问题。
页: [1]
查看完整版本: STM32+LEIP+RTOS操作Flash进硬中断的问题-求教