CubeMX生成的SysClock问题
新入手一块STM32F103C8的小板子,在测试LCD时,感觉速度很慢,ASCII码的清屏都有明显的刷屏视觉,其外置晶振为8MHz。不想再焊了,想用PLL将SysClock提高到允许的72MHz或更高试试。用CubeMX生成的代码:
//System Clock Configuration
void SystemClock_Config(void){
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
//Initializes the CPU, AHB and APB busses clocks
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = 16;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}
//Initializes the CPU, AHB and APB busses clocks
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK){Error_Handler();}
//Configure the Systick interrupt time
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
//Configure the Systick
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
//SysTick_IRQn interrupt configuration
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
生成的代码中 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;这一句是不用PLL,当改成 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;就报错这一句。问题是,这一堆代码中只有这一行有PLL,其他的都没有,应该如何操作呢?在CubeMX中左边也找不到设置PLL的地方,无奈求助。
顺便说一下,CubeMX是首次使用,还是不太熟悉。
先谢谢了。
请参考这个帖子解决:
关于STM32CubeMX 4.20.0版本时钟配置BUG的修复方案
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=611057&fromuid=3319693
(出处: 意法半导体STM32/STM8技术社区)
奏奏奏 发表于 2017-3-31 16:14
请参考这个帖子解决:
关于STM32CubeMX 4.20.0版本时钟配置BUG的修复方案
https://www.stmcu.org.cn/module/for ...
谢谢,改了不报错,但速度没有变化。问一下:如果要是高SysClock需要改哪里呢?下边:
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;//RCC_SYSCLK_DIV1;RCC_SYSCLK_DIV16;RCC_SYSCLK_DIV128
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;//RCC_HCLK_DIV1;RCC_HCLK_DIV16;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;//RCC_HCLK_DIV1;RCC_HCLK_DIV16;
不行,采用DIV16后更慢了,还有两处有数值,一处=16,增大或减小都不变,另一处 /1000,增加或减少5倍,没有影响。其他就不知道改哪里可以改变SysClock了,先谢谢了 zhjb1 发表于 2017-3-31 16:32
谢谢,改了不报错,但速度没有变化。问一下:如果要是高SysClock需要改哪里呢?下边:
RCC_ClkInitStruct ...
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
修改为:
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
就应该能正常使用了
页:
[1]