首页 > 其他分享 >STM32学习笔记

STM32学习笔记

时间:2023-08-04 12:45:02浏览次数:41  
标签:学习 HAL HSE OscInitStruct 笔记 STM32 ClkInitStruct PLL RCC

目录


时钟配置

  • 时钟树

  • 系统时钟倍频到168MHz


 void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;
  
  /* Enable Power Control clock */
  __HAL_RCC_PWR_CLK_ENABLE();
  
  /* The voltage scaling allows optimizing the power consumption when the device is 
     clocked below the maximum system frequency, to update the voltage scaling value 
     regarding system frequency refer to product datasheet.  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  /* Enable HSE Oscillator and activate PLL with HSE as source */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 8;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);
  
  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 
     clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | 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;  
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

  /* STM32F405x/407x/415x/417x Revision Z devices: prefetch is supported  */
  if (HAL_GetREVID() == 0x1001)
  {
    /* Enable the Flash prefetch */
    __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
  }
}

  • 注意:HSE默认频率为25MHz,在 stm32f4xx_hal_conf.h 中按照实际情况修改外部高速晶振频率值 HSE_VALUE

  • 验证时钟频率

    • 输出系统频率到MCO脚
    • 调用函数获取时钟频率值
// Debug 仿真 wathch 只能查看全局变量
uint32_t SySCLKFreq = 0;
uint32_t HCLKFreq = 0;
uint32_t PCLK1Freq = 0;
uint32_t PCLK2Freq = 0;

int main(void){	
	
	HAL_Init();

	SystemClock_Config();
	
	HAL_RCC_MCOConfig(RCC_MCO2,RCC_MCO2SOURCE_SYSCLK,RCC_MCODIV_1);
	SystemCoreClockUpdate();
	
	SySCLKFreq = HAL_RCC_GetSysClockFreq();
	HCLKFreq = HAL_RCC_GetHCLKFreq();
	PCLK1Freq = HAL_RCC_GetPCLK1Freq();
	PCLK2Freq = HAL_RCC_GetPCLK2Freq();
}

标签:学习,HAL,HSE,OscInitStruct,笔记,STM32,ClkInitStruct,PLL,RCC
From: https://www.cnblogs.com/mydodo/p/17605581.html

相关文章

  • 计算机专业软件开发英语口语学习 App All In One
    计算机专业软件开发英语口语学习AppAllInOne商务英语/工作英语demosEWA:轻松学习英语阅读,写作和口语(⚠️价格小贵,可以试用订阅;记得7天前提前取消订阅,不然¥830就没有了)提升语法&词汇量https://apps.apple.com/cn/app/ewa-轻松学习英语阅读-写作和口语/id......
  • python爬虫学习小记——request模块
    要学习爬虫我们首先要了解requests这个模块Pythonrequests模块Pythonrequests是一个常用的HTTP请求库,可以方便地向网站发送HTTP请求,并获取响应结果。requests模块比 urllib 模块更简洁。使用requests发送HTTP请求需要先导入requests模块:importrequests......
  • 【技术总结】大数据开发模块化知识体系、学习路线及对应的资料推荐
    〇、概述1、常用网站 2、常用学习路线图极客时间:石墨文档:https://shimo.im/docs/anJWOliiPz0WEjY0/read 大数据课程大纲:https://w.1yb.co/LEAzlvV【即石墨文档】 马士兵教育:https://www.processon.com/view/link/6244466b5653bb072bcd241d#map 尚硅谷:http://www.atguigu.com/......
  • requests的学习
    response的解析解析请求的url:r.url解析响应状态码:r.ststus_code解析文本类型的response:r.textr.text用于解析respose内容为文本类型requests会自动解码其中的内容r.encoding#查看requests使用了什么编码或者设置自己的编码如果你改变了编码,每当你访问r.text,R......
  • Vue学习 2.0 版本笔记
    Vue学习一、前端知识体系HTML(结构):超文本标记语言(HyperTextMarkupLanguage),决定网页的结构和内容CSS(表现):层叠样式表(CascadingStyleSheets),设定网页的表现样式JavaScript(行为):是一种弱类型脚本语言,其源代码不需经过编译,而是由浏览器解释运行,用于控制网页的行为表现层(CSS)CS......
  • 个人笔记,关于css样式
    /*引入样式<linkhref="https://fonts.font.im/css?family=Open+Sans"rel="stylesheet"type="text/css">*/html{/*px表示“像素(pixels)”:基础字号为10像素*/font-size:20px;/*Googlefonts输出的CSS*/font-family:'Op......
  • YOLO系列代码调试笔记
    环境:Windows10、Python3.8.5、torch1.13.0+cu116、torchvision0.14.0+cu116工程:https://github.com/abeardear/pytorch-YOLO-v1bug1:#resnet=models.resnet50(pretrained=True)resnet=models.resnet50(weights=ResNet50_Weights.DEFAULT)因为版本原因,加载预......
  • Java 诊断工具 Arthas 教程学习笔记
    Java诊断工具Arthas教程学习笔记 Java诊断利器Arthas,是阿里的一款开源工具。Github-alibaba/arthas 上可以看到它的介绍。了解它,主要是最近对分析Java错误堆栈比较感兴趣,机缘巧合看到了它。本文记录的内容,就是基于它官网的文档摘抄的,涉及的截图可能由于篇幅有限,不是......
  • 【华秋推荐】物联网入门学习模块 ESP8266
    随着全球信息技术的不断进步和普及,物联网成为当今备受关注的技术热点之一。通过物理和数字设备之间的连接来实现自动化和互联互通的网络。无线传感器、云计算和大数据分析等技术,物联网使设备能够相互交流和共享信息,实现智能化的自动化操作。它连接着各种物体,实现物与物的互联互通......
  • [岗位能力--判断推理1--贾鹏]军队文职2023-01-03之前笔记
    day1 ......