
新入手一块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/ ... amp;fromuid=3319693
(出处: 意法半导体STM32/STM8技术社区)
谢谢,改了不报错,但速度没有变化。问一下:如果要是高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了,先谢谢了
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
修改为:
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
就应该能正常使用了