一、振荡器类型与配置

1、振荡器类型:LSE、LSI1、LSI2、MSI、HSI、HSI48、HSE

2、MX中的振荡器配置

3、代码配置样例

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI1
                              |RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

二、系统总线时钟与配置

1、总线时钟:SYSCLK、HCLK、HCLK2、HCLK4、PCLK1、PCLK2

2、MX中的总线时钟配置

3、代码配置样例

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4|RCC_CLOCKTYPE_HCLK2
                              |RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
  {
    Error_Handler();
  }

三、PLL时钟与配置

1、PLL时钟源选择:MSI、HSI、HSE或者NONE

2、PLL分频参数:PLLM、PLLN、PLLP、PLLQ、PLLR

3、MX中的PLL配置

四、外设时钟类型与时钟源配置

1、外设时钟类型:CLK_USART1、CLK_LPUART1、CLK_I2C1、CLK_I2C3、CLK_LPTIM1、CLK_LPTIM2、CLK_SAI1、CLK_USB、CLK_RNG、CLK_ADC、CLK_RTC/LCD、CLK_RFWAKEUP、CLK_SMPS

2、MX中的外设时钟源配置

1)PLLSAI1时钟配置

2)USART1时钟源配置

3)LPUART1时钟源配置

4)I2C1时钟源配置

5)I2C3时钟源配置

6)LPTIM1时钟源配置

7)LPTIM2时钟源配置

8)SAI1时钟源配置

9)USB时钟源配置

10)RNG时钟源配置

11)ADC时钟源配置

12)RFWAKEUP时钟源配置

13)SMPS时钟源配置

14)RTC/LCD时钟源配置

3、代码配置样例

  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP
                              |RCC_PERIPHCLK_RTC;
  PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
  PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSI;
  PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
  PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
 
 

最新文章

  1. Java 输出流中的flush方法
  2. 关于js中的this之判断this
  3. spring/spring boot/spring cloud开发总结
  4. session过期时间
  5. java与mysql连接
  6. 繁华模拟赛 Evensgn玩序列
  7. php实现自动运行文件
  8. Erlang安装简介
  9. PHP 生命周期,Opcode 缓存。
  10. [J2EE学习][post,get乱码处理]
  11. javascript 验证身份证
  12. 在.NET中快速创建一个5GB、10GB或更大的空文件
  13. Git Config(转)
  14. 认识ASP.NET MVC6
  15. iOS之内存分析
  16. Oracle:控制语句 IF..ELSIF语句、CASE语句、FOR循环语句
  17. [SDOI2016]排列计数
  18. 论 数据库 B Tree 索引 在 固态硬盘 上 的 离散存储
  19. Python中逗号的妙用
  20. Kafka 0.8 NIO通信机制

热门文章

  1. vim在文件末尾增加内容
  2. CWinThread类,使用后要不要使用CloseHandle释放内核
  3. rest_framework 学习笔记(一)
  4. 2019-2020 ICPC, Asia Jakarta Regional Contest C. Even Path
  5. mysql数据库之索引与慢查询优化
  6. [转帖]yum与apt-get的区别以及两者更新源(阿里/网易【163】)
  7. 使用Spring-boot-admin对Spring boot的服务进行监控
  8. PAT B1012.数字分类
  9. linux 百度ping不通解决
  10. linux常用国内的免费源及其各别的配置方法.阿里源,epel源,搜狐网易等等..