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

怎样做付费下载的网站企业网站建设的类型主要有

怎样做付费下载的网站,企业网站建设的类型主要有,自己做网站都要什么软件,怎么更改wordpress观前提示:函数完整代码在文末,本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍: 此函数是一个用于初始化RCC(Reset and Clock Control)振荡器(Osc…

观前提示:函数完整代码在文末,本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法
f105时钟树详解图

HAL_RCC_OscConfig()

函数介绍:

此函数是一个用于初始化RCC(Reset and Clock Control)振荡器(Oscillators,函数名中Osc为此单词缩写)的函数。它接受一个指向RCC_OscInitTypeDef结构体的指针,结构体的各成员分别包含了RCC振荡器的配置信息。
函数行数为442行,功能性上分为六个部分:

  • HSE配置,外部高速时钟
  • HSI配置,内部高速时钟
  • LSE配置,外部低速时钟
  • LSI配置,内部低速时钟
  • PLL1配置,锁相环1
  • PLL2配置,锁相环2

下文中我们将以功能为线索依次分析此函数

函数分析

HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct)
{uint32_t tickstart;uint32_t pll_config;/* Check Null pointer */if (RCC_OscInitStruct == NULL){return HAL_ERROR;}/* Check the parameters */assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));

首先,定义了两个局部变量tickstart和pll_config。

接下来,检查传入的指针RCC_OscInitStruct是否为空,如果为空,则返回HAL_ERROR。

然后,使用assert_param宏来检查RCC_OscInitStruct->OscillatorType参数是否合法。

HSE Configuration部分

if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)

这行代码通过按位与运算符将RCC_OscInitStruct->OscillatorTypeRCC_OSCILLATORTYPE_HSE进行按位与操作,并将结果与RCC_OSCILLATORTYPE_HSE进行比较。如果结果等于RCC_OSCILLATORTYPE_HSE,则条件成立。这个条件判断语句的目的是检查是否启用了外部高速时钟(HSE)作为振荡器类型。

/* Check the parameters */
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));

这是一个断言语句,用于检查RCC_OscInitStruct->HSEState的值是否符合要求。IS_RCC_HSE是一个宏,用于验证RCC_OscInitStruct->HSEState是否满足特定的条件。如果断言失败,则会触发断言错误。

if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE)))

这个条件判断语句检查系统时钟源是否为外部高速时钟(HSE),或者是由HSE驱动的PLL时钟源。如果条件成立,则意味着HSE在系统时钟或PLL时钟源中被使用,此时不允许将其禁用。

if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
{return HAL_ERROR;
}

这个条件判断语句检查HSE是否已经就绪,并且RCC_OscInitStruct->HSEState的值为禁用状态(RCC_HSE_OFF)。如果这两个条件都满足,函数将返回HAL_ERROR

__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);

这行代码根据RCC_OscInitStruct->HSEState的值配置HSE振荡器的状态。__HAL_RCC_HSE_CONFIG是一个宏,用于设置HSE的状态。

/* Check the HSE State */
if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
{/* Get Start Tick */tickstart = HAL_GetTick();/* Wait till HSE is ready */while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET){if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE){return HAL_TIMEOUT;}}
}

这部分代码在HSE不是禁用状态时,等待HSE就绪。它使用__HAL_RCC_GET_FLAG宏来检查HSE是否已经就绪。如果HSE在超时时间内仍未就绪,函数将返回HAL_TIMEOUT

else
{/* Get Start Tick */tickstart = HAL_GetTick();/* Wait till HSE is disabled */while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET){if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE){return HAL_TIMEOUT;}}
}

这部分代码在HSE为禁用状态时,等待HSE被禁用。它使用__HAL_RCC_GET_FLAG宏来检查HSE是否已经禁用。如果HSE在超时时间内仍未禁用,函数将返回HAL_TIMEOUT

点击《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()——古月居可查看全文

http://www.hyszgw.com/news/34964.html

相关文章:

  • 网站安全检测报告昆山建设工程招标网站
  • 自己做的网站验证码出不来怎么百度关键词搜索怎么收费
  • 南宁高端网站平面设计网站编辑招聘
  • 汶上县建设局官方网站网站建设服务市场
  • 平凉市网站建设电子商城系统开发模块
  • 个人站长和企业网站网络营销优化
  • 株洲网站建设 公司长沙网站整站优化
  • 专业做汽配的网站建网站松滋哪家强?
  • 网站开发最快的语言网站建设公司接单
  • 网站优化怎么样泉州网站制作
  • 中小企业网站seo小程序开发需要哪些技术
  • 网站优化seo怎么做天元建设集团有限公司 电话
  • 中国第一个做电商网站江门市建设工程投标网站
  • 企业网站 appseo推广价格
  • 鹰潭网站建设公司软件外包公司名单
  • 菏泽网站建设哪好网站已经编辑好了 上线准备哪些工作
  • 建设黄页大全网站入口ps做网站分辨率自适应
  • 淡水网络公司做网站国外wordpress移动主题
  • 做网站包括备案吗自己做网站模板
  • 建设银行网站登录智慧旅游平台建设方案
  • 网站不用了怎么办郑州网站建设费用
  • 沈阳网站建设管理图片网站怎么建设
  • 中小企业网站建设策划临沂建网站公司
  • 淘宝网站建设的目的电脑网站建设策划书
  • 做网站图片太大好吗wordpress搭建短视频网站
  • 网站开发编写籍贯代码郑州网站制作咨询
  • 网站谷歌排名wordpress图片链接更换域名
  • 做投票页面什么网站好wordpress注册logo
  • 网站建设 公司新闻天津自动网站建设调试
  • 企业网站如何备案流程论文引用网站数据 如何做注释