你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
xiaoshen-372360 提问时间:2018-12-8 22:48 /
前两天把官方的FreeRTOS+LWIP移植到紫的板子上,用起来没问题了,我在板子上添加程序的时候就除了问题了
我首先初始化Flash-上电之后就读取Flash中的数据,数据是保存的硬件版本信息和软件版本信息的,只是读取操作,此时还没有进入到RTOS的任务调度函数,其他任务还没有初始化,
之后就是开始初始化LWIP的任务,但是任务初始化完成之后,进入调度程序之后就开始进hardfult中断了,屏蔽掉flash 操作,整个系统没为题,屏蔽掉掉LWIP的任务,是正常的,两个子程序单独运行,都没有问题,合并起来就有问题了,具体的代码顺序如下:

  1. /*-------------------------------------------------------------------------------------
  2. ==  函数名    :
  3. ==  描  述    :
  4. ==  输入参数  :
  5. ==  返回值    :
  6. ==  备  注    :  
  7. ---------------------------------------------------------------------------------------
  8. */
  9. int main(void)
  10. {
  11.                         /* Configures the priority grouping: 4 bits pre-emption priority */
  12.                         //  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  13.                         /* Init task */

  14.                         System_Flash_Process();//--<font color="#ff0000">Flash 操作的函数</font>
  15.                         DRV_IO_Init();//--输入输出以及端子与引脚的对应关系定义-错误引脚的定义以及对应关系--
  16. //                        xTaskCreate(Modbus_RS232_Tasks   ,(int8_t *)"Modbus_RS232_Tasks"       , 2048 , NULL, RS232_Task_PRIO   , NULL);//--
  17. //                        xTaskCreate(Modbus_RS485_1_Tasks ,(int8_t *)"Modbus_RS485_1_Tasks"     , 2048 , NULL, RS485_1_Task_PRIO , NULL);  //--
  18. //                        xTaskCreate(Modbus_RS485_2_Tasks ,(int8_t *)"Modbus_RS485_2_Tasks"     , 2048 , NULL, RS485_2_Task_PRIO , NULL);  //--
  19. //                        //--ADC --PWM ---DO --DI  --LED --        报警--
  20. //                        xTaskCreate(TaskIO          ,(int8_t *)"TaskIO"                        , 2048 , NULL, IO_TASK_PRIO      , NULL);  //-- IO  --
  21. //                        xTaskCreate(ControlLogic    ,(int8_t *)"ControlLogic"                  , 2048 , NULL, CTRL_TASK_PRIO    , NULL);  //-- IO  --
  22. //                        xTaskCreate(Flash_RTC_Tasks ,(int8_t *)"Flash_RTC_Tasks"               , 2048 , NULL, FLASH_TASK_PRIO   , NULL);  //-- LED --
  23.             //--<font color="#ff0000">下面是LWIP的官方例程的代码,---就是上文说到的LWIP任务</font>
  24.             xTaskCreate(Main_task       ,(int8_t *) "Main", configMINIMAL_STACK_SIZE * 2, NULL,MAIN_TASK_PRIO, NULL);

  25.                         /* Start scheduler */
  26.                         vTaskStartScheduler();

  27.   /* We should never get here as control is now taken by the scheduler */
  28.                 while(1)
  29.                 {
  30.                         IO_OutPutBitCTR(IO_Ch_22,IO_ON);//--控制器故障-输出控制--
  31.                 }
  32. }
复制代码

求各位大佬指导一下。

1_02.jpg

内网通截图20181209172249.png

评分

参与人数 1 ST金币 +20 收起 理由
STMCU + 20

查看全部评分

收藏 评论4 发布时间:2018-12-8 22:48

举报

4个回答
sylar.z 回答时间:2018-12-10 16:28:48
调试运行到屏蔽掉的代码处,可能是下载的目标文件跟源码不一致

评分

参与人数 1ST金币 +3 蝴蝶豆 +1 收起 理由
STMCU + 3 + 1

查看全部评分

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的,文件没有问题。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版