一个奇怪的SystemClock_Config问题解决方法

### STM32在Keil环境下`delay_ms`函数报错解决方案 当在STM32的Keil环境中使用`delay_ms`函数时遇到错误,通常是因为初始化配置不完全或者库文件未正确引入。具体来说: - `delay_ms`函数依赖于系统的滴答定时器(SysTick),因此需要确保SysTick已经被正确定义并启动[^1]。 为了使`delay_ms`正常工作,在程序入口处应调用系统初始化函数,例如`SystemInit()`,这会设置CPU频率和其他必要的硬件参数。此外,还需要确认HAL库或标准外设库已按照项目需求被正确安装和链接到工程中[^2]。 如果仍然存在编译错误,则可能是由于头文件路径缺失或是宏定义冲突所引起。建议检查项目的包含目录以及预处理器选项,保证所有必需的头文件都能被顺利找到,并且不存在重复定义的情况。 对于特定类型的错误消息,可以根据提示进一步排查问题所在;如果是链接阶段出现问题,则需审视链接脚本中的内存布局设定是否合理。 ```c // 初始化系统时钟 void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /* Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /* Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /* Initialize SysTick Timer for Delay Functionality */ if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) { Error_Handler(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值