使用 CubeMX 配置野火的 STM32H743IIT6 挑战者 V2 开发板,自动生成的时钟代码无法运行,使用野火教程中的时钟配置代码正常运行
SYS 配置
CLOCK 配置
自动生成的代码
/**
* @brief System Clock Configuration
* @retval None
*/
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
*/
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 = 5;
RCC_OscInitStruct.PLL.PLLN = 192;
RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLQ = 48;
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_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
}
引用 皆我百晓生 小程序回复内容作答:
根据您提供的信息,您遇到了使用CubeMX配置野火STM32H743IIT6挑战者V2开发板时钟出错的问题。自动生成的时钟代码无法运行,而使用野火教程中的时钟配置代码可以正常运行。
根据您提供的代码,发现在自动生成的代码中,使用了RCC_OscInitStruct结构体来配置时钟。其中,配置了HSE作为时钟源,并且使能了PLL。根据代码中的配置,时钟源频率为HSE/PLL_M = 5MHz,PLL倍频系数为192,使得系统时钟频率为5MHz * 192 = 960MHz。同时,还配置了各个时钟分频系数。
根据问题描述,可以推测问题可能出在生成代码时,CubeMX没有正确配置时钟源和PLL的倍频系数等参数。为了解决问题,可以尝试以下操作:
如果以上方法仍然无法解决问题,建议参考野火的技术支持或野火论坛中的相关帖子,以获取更详细的帮助和支持。
题主,这个问题我来替你解决(参考结合AI智能、文心一言),若有帮助,还望采纳,点击回答右侧采纳即可。
可能是因为 CubeMX 配置时钟的方式有误,导致生成的代码不正确。建议按照野火教程中的方法手动配置时钟,并使用野火提供的时钟配置代码进行测试。下面是 STM32H743IIT6 挑战者 V2 开发板的时钟配置代码示例:
/* Configure the main internal regulator output voltage */
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/* Initializes the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef structure. */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 360;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
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_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
需要注意的是,时钟配置代码中的参数应该根据实际情况进行修改,不同的芯片、外部晶振和需求都有可能会导致时钟配置有所不同。
/* Configure the main internal regulator output voltage */
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/* Initializes the RCC Oscillators according to the specified parameters in the RCC_OscInitTypeDef structure. */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 360;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
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_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
有了正确的配置了干嘛还要纠结cube昵
CubeMX配置错误:如果CubeMX配置错误,可能会导致生成的时钟代码无法正常运行。您可以尝试重新配置CubeMX,或者参考野火教程中的时钟配置代码。
时钟配置错误:如果时钟配置错误,可能会导致生成的时钟代码无法正常运行。您可以尝试检查时钟配置,修复错误。
系统设置错误:如果系统设置错误,可能会导致生成的时钟代码无法正常运行。您可以尝试重新设置系统。
其他软件冲突:如果其他软件与时钟代码冲突,可能会导致生成的时钟代码无法正常运行。您可以尝试关闭其他软件,或者在时钟代码中添加兼容性代码
CubeMX自动生成的代码可能使用了不同版本的HAL库。如果您的项目使用了不同版本的HAL库,可能会导致与野火教程不一致的问题。
是不是版本不对应呀或者是环境没配好
【以下回答由 GPT 生成】
解决方案:
根据你提供的信息,问题可能出在时钟配置上。有几个可能的原因会导致这种情况发生。
首先,请确认你的开发板和野火教程所使用的开发板是否完全相同。如果不同,可能需要进行一些额外的配置。
接下来,请尝试以下解决方案:
解决方案一:修改时钟配置
尝试使用不同的时钟配置参数来生成代码。打开CubeMX,选择"System Core" -> "RCC",然后修改以下参数:
在生成代码之后,重新编译并下载到开发板中,看是否问题得到解决。
解决方案二:参考野火教程代码
如果修改时钟配置后问题仍然存在,可以尝试参考野火教程中的时钟配置代码。打开野火教程的时钟配置代码,将其添加到你的项目中,并替换掉原有的时钟配置函数。这样可以确保使用了正确的时钟配置参数。
请按照以下步骤尝试解决问题:
main.c
文件,定位到SystemClock_Config
函数。SystemClock_Config
函数内,并替换掉原有的代码。这样可以确保使用了正确的时钟配置参数,如果问题仍然存在,则可能需要进一步检查你的硬件连接和供电情况。
希望这些解决方案对解决你的问题有所帮助。如果问题依然存在或有任何其他疑问,请随时提问。
结合GPT给出回答如下请题主参考
初步研究了一下您提供的信息,可能是由于 CubeMX 自动配置时钟时出现了一些问题,导致生成的代码无法正确运行。
建议您按照野火的教程进行时钟配置,以确保时钟配置正确。当然,您也可以尝试手动配置时钟,以便更好地掌握 STM32 的时钟配置知识。
此外,您也可以检查一下您使用的 CubeMX 版本是否是最新的版本,以确保得到最佳的支持和更新。
希望能对您有所帮助。
这可能是由于不同版本的STM32CubeMX或野火开发板库在时钟配置方面存在一些差异,或者可能是由于自动生成的代码存在某些错误或问题
如果您已经尝试了自动生成的代码并且遇到了问题,那么您可以尝试使用野火教程中提供的时钟配置代码野火教程中的代码是为他们的开发板特别编写的,所以应该可以在你的开发板上正常运行
以下是一些可能的步骤来帮助你配置时钟:
请注意,不同的STM32CubeMX版本和野火开发板库版本可能会有所不同,所以请确保你正在使用最新版本的软件和库
STM32H743使用CubeMX配置Lwip、Freertos
检查与时钟相关的外设是否未正确配置,并确保使用的固件或编译器版本与 STM32H743IIT6 开发板兼容。
检查一下程序版本和开发板是否兼容
自动生成的代码不对,有问题撒
检查时钟分频器配置:根据您的需求,检查时钟分频器的配置是否正确,您可以参考野火教程中的时钟配置代码,确保分频器的配置符合您的预期