当前位置: 首页 > news >正文

STM32F103 HSE时钟倍频以及设置频率函数(新手向,本人也是新手)

HSE_SetSysCLK是野火教程里的,不懂的去这 16-RCC(第3节)使用HSE配置系统时钟并使用MCO输出监控系统时钟_哔哩哔哩_bilibili

HSE_AutoSetHSE的算法部分是自己写的,用了一个转接数组。C语言不支持bool所以自己定义了一个boolK代替bool。

AutoHSE.h:

/**
*@file AutoHSE.h
*@version 自定
*/#ifndef __AUTOSETHSE_H
#define __AUTOSETHSE_Htypedef enum Bool_
{False = 0,True = !False
}boolK;void HSE_SetSysCLK(uint32_t RCC_PLLMul_x);
boolK HSE_AutoSetHSE(uint32_t Soften);#endif /*! __AUTOSETHSE_H */

AutoHSE.c:

#include "AutoHSE.h"uint32_t RCC_PLLMul_X[15] = {
RCC_PLLMul_2,
RCC_PLLMul_3,
RCC_PLLMul_4,
RCC_PLLMul_5,
RCC_PLLMul_6,
RCC_PLLMul_7,
RCC_PLLMul_8,
RCC_PLLMul_9,
RCC_PLLMul_10,
RCC_PLLMul_11,
RCC_PLLMul_12,
RCC_PLLMul_13,
RCC_PLLMul_14,
RCC_PLLMul_15,
RCC_PLLMul_16
};void HSE_SetSysCLK(uint32_t RCC_PLLMul_x)
{ErrorStatus HSEStatus;  //typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;??????????RCC_DeInit();                           //??RCC_HSEConfig(RCC_HSE_ON);              //??HSEHSEStatus=RCC_WaitForHSEStartUp();      // ??HSE??if(HSEStatus==SUCCESS){FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);      //?????FLASH_SetLatency(FLASH_Latency_2);                         // 72M???2???RCC_HCLKConfig(RCC_SYSCLK_Div1);   //HCLK???RCC_PCLK1Config(RCC_HCLK_Div2);    //PCLK1???RCC_PCLK2Config(RCC_HCLK_Div1);    //PCLK2???RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x);   //?????RCC_PLLCmd(ENABLE);                                   //??while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){};      //??PLL??RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);             //??????while(RCC_GetSYSCLKSource()!=0x08);}else{}	
}boolK HSE_AutoSetHSE(uint32_t Soften)
{if(Soften > 128 || Soften < 2){return False;}else{HSE_SetSysCLK(RCC_PLLMul_X[(Soften-(Soften%8))/8-2]);return True;}return False;
}// _____END_________

亲测,有用:D,喜欢就点个赞,支持一下我这个新手吧qwq.

http://www.lryc.cn/news/496786.html

相关文章:

  • renderExtraFooter 添加本周,本月,本年
  • SprinBoot整合KafKa的使用(详解)
  • 【机器学习】CatBoost 模型实践:回归与分类的全流程解析
  • PyTorch 实现动态输入
  • 【Linux相关】查看conda路径和conda和cudnn版本、安装cudnn、cuDNN无需登录官方下载链接
  • 基于Java Springboot环境保护生活App且微信小程序
  • 简单的springboot使用sse功能
  • 【服务器问题】xshell 登录远程服务器卡住( 而 vscode 直接登录不上)
  • AI×5G 市场前瞻及应用现状
  • 利用 Redis 与 Lua 脚本解决秒杀系统中的高并发与库存超卖问题
  • 【MySQL】创建数据库、用户和密码
  • leetcode hot100【Leetcode 72.编辑距离】java实现
  • 腾讯阅文集团Java后端开发面试题及参考答案
  • protobuf实现Hbase数据压缩
  • 论文阅读之方法: Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris
  • PHP语法学习(第三天)
  • PostgreSQL添加PostGIS扩展和存储坐标
  • Flink四大基石之State(状态) 的使用详解
  • Linux中dos2unix详解
  • MySQL MVCC 介绍
  • Linux篇之日志管理工具Logrotate介绍并结合crontab使用
  • Vulnhub靶场 Matrix-Breakout: 2 Morpheus 练习
  • 秒杀项目 超卖问题 详解
  • Linux系统编程之进程控制
  • 集合的相关性质与定义
  • pytest自定义命令行参数
  • c++预编译头文件
  • YOLOv8模型pytorch格式转为onnx格式
  • 电子课程开发中的典型误区
  • Docker 逃逸突破边界