stm32在哪里设置内部时钟:STM32时钟配置实例
本文将介绍STM32F4时钟配置的操作步骤、并对比时钟配置前后LED外设闪烁的快慢以及对应代码的讲解
一、使用默认时钟配置去执行代码、获取LED闪烁的周期
如下图所示我们默认使用的是HSI(内部高速时钟)且不进行任何配置
最后我们系统时钟、以及外设获得的时钟频率为16MHz
主函数中的代码如下:
int main(void){ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ printf("this is clock system test2\n"); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { mydelay(20); HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10); printf("TogglePin\n"); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}
自己写的延时函数如下:
void mydelay(uint8_t time){ uint8_t i; uint16_t j; for(i= 0; i < time; i ) { for(j = 0; j < 5000; j ) { } }}
实际测得LED闪烁的周期是在30ms左右
对STM32F4时钟进行配置后执行代码、获取LED闪烁的周期
如下图所示我们对时钟进行配置:
由于时钟频率168MHz是16MHz 10.5倍,我们将mydelay(20)改为mydelay(210)
实际测得LED闪烁的周期是在30ms左右
比对时钟配置前后、LED闪烁周期的区别
由上可知LED闪烁周期相同,但相同的延时周期内、配置后的168MHz系统时钟,运行的延时函数内的空指令数量是默认配置的10.5倍,综上时钟配置后使得指令运行的速度是原来的10.5倍
时钟部分的代码解析
SystemClock_Config();函数中就是我们在时钟树中设置的内容
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 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 = 25; RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 4; 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_5) != HAL_OK) { Error_Handler(); }}
推荐
- 1猫咪走丢之后再回家变话痨了:猫咪失踪返家却性情大变208
- 2考拉小巫的孩子得了什么病?年仅五岁自闭症画家IRISGRACE和治疗猫Thula的友情469
- 3猫里面的猫粮是随便投喂的吗?猫主子对着猫粮一通埋129
- 4有把蛇当宠物养的吗?蛇,能当宠物养吗饲养者六至六十岁都有484
- 5宋朝,狸猫换太子的真实原型是谁?宋朝,狸猫换太子的真实原型471
- 6气味小方便携带的宠物,你家宠物热的还在流哈拉子嘛403
- 7猫屎咖啡为什么要叫猫屎咖啡?知道猫屎咖啡的真相后209
- 8比熊跟泰迪哪个要好一点?比熊和泰迪哪个更好各有各的特点473
- 9现实中的虐心爱情小故事,故事,她重伤将死骗心上人睡一觉能痊愈220
- 10喜欢养观赏鱼容易被感染寄生虫吗?长期不换水观赏鱼患病会传染吗205
宠物
- 1狗狗呕吐现象该怎么治疗?养宠经验狗狗呕吐怎么治疗454
- 2对猫咪最有营养的食物有哪些?这几种食物对猫咪来说是366
- 3家庭消毒的重要性:家庭消毒要重视但勿过度281
- 4狗为什么会一整天不吃狗粮?狗狗营养过剩是为什么321
- 5大量换水对观赏鱼的危害怎么补救?给自己的观赏鱼定期换水169
- 6道路交通安全法关于宠物狗的规定:姜堰这个交通路口一大狗长时间378
- 7猫咪在家抓了只老鼠好吗?我家猫捉了只半死不活的老鼠回来送给我...480
- 8肝火旺盛能吃葱姜蒜:吃蒜导致肝火旺试试这一种吃法127
- 9夏目友人帐剧场版结缘空蝉普通话:剧场版,夏目友人帐缘结空蝉200
- 10为什么猫咪做了绝育还会发情?猫咪到底为什么绝育后还会发情呢493