ST意法半导体
直播中

djfldsthtr

8年用户 952经验值
擅长:光电显示
私信 关注
[问答]

CubeIDE1.4在使用FreeRTOS时挂起是什么原因导致的

大家好,
我有Nucleo-L4P5ZG,开发环境是WIN10、CubeIde1.4和CubeMx 6.2。
我在尝试调试简单的 FREERTOS 切换 Led 代码时遇到了一个奇怪的行为,这里有详细信息:
1- 我从 Cube Mx 开始,并使用以下配置为 Cube IDE 生成代码:
  • 只有 GPIO 引脚 PB7 [LD2= Nucleo 上的蓝色 LED] 配置为输出
  • Sysclk = 120 MHz 由 PLLCLK 驱动,PLLCLK 由 MSI = 4MHz 驱动
  • 选择 FreeRtos Support 而不创建除 Default 任务之外的任何 OS 资源
  • 选择 tiM7 作为系统定时器
就是这样。
2- 我将切换 LED 代码放在默认任务中
  • void StartDefaultTask(void *argument)
  • {
  •   /* USER CODE BEGIN 5 */
  •   /* Infinite loop */
  •   for(;;)
  •   {
  •     osDelay(1000);
  •     HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
  •     osDelay(1000);
  •     HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
  •   }
  •   /* USER CODE END 5 */
  • }
3-一切正常,无需启动调试会话
4-当我开始调试会话时,代码按预期停止在主要功能处,当我按下播放按钮时,Led 开始切换
5- 当我停止并重新启动调试会话时,我注意到代码并没有在 main 函数处停止,并且
  • LD2 蓝色 LED 未切换
  • LD3 [RED Led on Nucleo] 和 LD8 亮起
6-当我停止并重新启动调试会话时,一切都按预期进行,但必须重复这种情况(一次调试挂起,没有任何效果,然后下一次一切都完美)
我需要知道这种挂起行为背后的原因吗?


更多回帖

发帖
×
20
完善资料,
赚取积分