RT-Thread论坛
直播中

李波

8年用户 1522经验值
私信 关注
[问答]

制作STM32H743VIT6的BSP包烧录后板子没反应,进行debug时会卡死的原因?怎么解决?


  • 制作STM32H743VIT6的BSP包烧录后板子没反应,进行debug时会卡死在rt_hw_hard_fault_exception,并且调试串口也没输出(用的串口1);
可以确认硬件可用,使用CubeMX生成的简单工程电灯和串口都能用。
时钟配置


  • void SystemClock_Config(void)
  • {
  •   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  •   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  •   /** Supply configuration update enable
  •   */
  •   HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);

  •   /** Configure the main internal regulator output voltage
  •   */
  •   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);

  •   while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}

  •   /** Initializes the RCC Oscillators according to the specified parameters
  •   * in the RCC_OscInitTypeDef structure.
  •   */
  •   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  •   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  •   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  •   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  •   RCC_OscInitStruct.PLL.PLLM = 2;
  •   RCC_OscInitStruct.PLL.PLLN = 32;
  •   RCC_OscInitStruct.PLL.PLLP = 2;
  •   RCC_OscInitStruct.PLL.PLLQ = 2;
  •   RCC_OscInitStruct.PLL.PLLR = 2;
  •   RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
  •   RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
  •   RCC_OscInitStruct.PLL.PLLFRACN = 0;
  •   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }

  •   /** Initializes the CPU, AHB and APB buses clocks
  •   */
  •   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  •                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
  •                               |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
  •   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  •   RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
  •   RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
  •   RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV1;
  •   RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV1;
  •   RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
  •   RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV1;

  •   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  • }


主程序


  • int main(void)
  • {
  •     int count = 1;
  •     /* set LED0 pin mode to output */
  •     rt_pin_mode(18, PIN_MODE_OUTPUT);
  •     rt_pin_mode(45, PIN_MODE_OUTPUT);

  •     while (count++)
  •     {
  •             rt_pin_write(18, PIN_HIGH);
  •             rt_pin_write(45, PIN_HIGH);
  •             HAL_Delay(50);
  •             rt_pin_write(18, PIN_LOW);
  •             rt_pin_write(45, PIN_LOW);
  •             HAL_Delay(50);
  •     }
  •     return RT_EOK;
  • }





更多回帖

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