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

家庭电脑做网站建站流程新手搭建网站第一步

家庭电脑做网站,建站流程新手搭建网站第一步,网站顶部地图代码怎么做的,广东云浮罗定疫情最新情况概述 本文主要描述了STM32F103初始化过程系统时钟的初始化,主要描述了系统时钟的初始化,AHB总线时钟,APB总线时钟等的初始化。 硬件板卡3d图 时钟树 STM32F103的时钟树,如下所示: 时钟源选择 从STM32F103的时钟树框图,我们可以…

概述

        本文主要描述了STM32F103初始化过程系统时钟的初始化,主要描述了系统时钟的初始化,AHB总线时钟,APB总线时钟等的初始化。

硬件板卡3d图

时钟树

STM32F103的时钟树,如下所示:

时钟源选择

从STM32F103的时钟树框图,我们可以看到:

1、有可选的1路高速外部时钟接口,作为系统时钟的时钟源;

2、1路32.768的可选低速时钟,作为系统RTC和watchdog的时钟源;

3、1路内部的可选8M 高速时钟,作为系统时钟的时钟源;

系统时钟选择

根据时钟树所示,可选的系统的时钟选择,如下所示:

1、内部8M的HSI直接作为系统的时钟源,如果使用HSI作为系统时钟源的话,最大SYSCLK只能输出到64MHz;

2、HSI或者HSE的通过PLL的倍频后,作为系统时钟源;

3、HSE的输出,直接作为系统的时钟源;

通过系统时钟源的来源描述,系统的时钟源可以根据硬件板卡的制作情况,进行选择;作者自己设计的PCB板子上,因为没有连接外部晶振,因此将HSI作为系统的时钟源选择。后续的时钟初始化代码分析,会讲解怎么将HSI设置为系统的时钟源;

其他外设时钟

根据STM32F103的时钟树,其他外设控制器的时钟的来源如下所示:

1、USB控制器的时钟,直接来源于PLLCLK,然后经过USB预分频,最终达到48M的时钟输出,作为USB控制器的时钟;

2、I2S音频控制器的时钟,直接来源于SYSCLK, 和SYSCLK的时钟相同;

3、SDIO, FSMC, HCLK 等时钟,直接来自于AHB总线的时钟输出;

4、剩余外设的时钟自于APB1或者APB2,这里不再这里详细描述;

时钟初始化设置

由于作者自己设计的硬件板子,使用了内部的8M作为整个CPU的时钟源,因此,下面以使用内部8M的高速时钟的情况,进行源码讲解,设置源码如下所示:

void SystemClock_Config(void)
{RCC_ClkInitTypeDef clkinitstruct = {0};RCC_OscInitTypeDef oscinitstruct = {0};/* Configure PLL ------------------------------------------------------*//* PLL configuration: PLLCLK = (HSI / 2) * PLLMUL = (8 / 2) * 16 = 64 MHz *//* PREDIV1 configuration: PREDIV1CLK = PLLCLK / HSEPredivValue = 64 / 1 = 64 MHz *//* Enable HSI and activate PLL with HSi_DIV2 as source */oscinitstruct.OscillatorType  = RCC_OSCILLATORTYPE_HSI;     /* HSI作为系统时钟源 */oscinitstruct.HSEState        = RCC_HSE_OFF;                /* 关闭HSE时钟 */oscinitstruct.LSEState        = RCC_LSE_OFF;                /* 关闭LSE时钟 */oscinitstruct.HSIState        = RCC_HSI_ON;                 /* 开启HSI时钟 */oscinitstruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;oscinitstruct.HSEPredivValue    = RCC_HSE_PREDIV_DIV1;oscinitstruct.PLL.PLLState    = RCC_PLL_ON;oscinitstruct.PLL.PLLSource   = RCC_PLLSOURCE_HSI_DIV2;oscinitstruct.PLL.PLLMUL      = RCC_PLL_MUL16;if (HAL_RCC_OscConfig(&oscinitstruct)!= HAL_OK){/* Initialization Error */while(1);}/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2clocks dividers 将PLL的输出,作为系统时钟*/clkinitstruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);clkinitstruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;clkinitstruct.AHBCLKDivider = RCC_SYSCLK_DIV1;clkinitstruct.APB2CLKDivider = RCC_HCLK_DIV1;clkinitstruct.APB1CLKDivider = RCC_HCLK_DIV2;if (HAL_RCC_ClockConfig(&clkinitstruct, FLASH_LATENCY_2)!= HAL_OK){/* Initialization Error */while(1);}
}

        由于作者为了减少PCB板子的尺寸,因此在设计过程中,硬件上没有接外部晶振和32.768的低速晶振。因此只能使用内部HSI作为时钟源,但是在使用HSI作为时钟源时,系统的时钟最大只能设置到64MHz;

代码主要逻辑如下:

1、将HSI的晶振作为系统的晶振输入;

2、关闭HSE时钟源;

3、关闭LSE时钟源;

4、计算出SYSCLK = HSI /2 * PLL_MUl16 = 8/2 * 16 = 64M;

5、调用HAL_RCC_OscConfig()接口,设置系统时钟源;

6、选择PLLCLK的输出,最为系统时钟(64M);

总结

        本文主要描述了,在STM32F103 CPU初始化过程中,系统时钟的初始化。虽然,我们可以利用ST提供的上位机图形化工具进行时钟配置,简单的勾选就可以产生我们需要的代码。但是,作为一个嵌入式开发程序员,我觉得,还是有必要去分析源码,了解CPU的内部原理和HAL层代码,这样才能根据自己产品的实际需求情况,设计出更具有性价比的产品。

链接

yanl1229/STM32F103

http://www.dtcms.com/wzjs/85485.html

相关文章:

  • 东莞网站建设 石化网络推广平台软件
  • 市政府网站管理制度建设推广接单平台
  • 6月8日政府网站建设规范如何在百度上做广告宣传
  • an网站建设免费精准客源
  • 如何做网站发布商品百度seo排名原理
  • 单产品网站模板软件外包公司排行榜
  • shopify欧洲seochinaz查询
  • 网站没有权重如何做网站优化
  • 站长工具seo综合查询adc网站备案信息查询
  • 手机网站建设的第一个问题猪八戒网接单平台
  • 设计平台app外贸谷歌优化
  • 外发加工网有哪些兰州seo新站优化招商
  • 内部网站建设教程推广拉新任务的平台
  • python做流量网站如何进行品牌宣传与推广
  • 如何做网站推广方法百度退推广费是真的吗
  • 哪有做网站的公司优化大师下载安装免费
  • 自己做装修效果的网站铜仁搜狗推广
  • 贵阳免费网站建设南昌网站设计
  • 微网站开发流程图seo人员的相关薪资
  • 视频网站亏钱为什么还要继续做合肥百度快照优化排名
  • 中国人在俄罗斯做网站需要多少卢布seo优化工作怎么样
  • 网站设计如何收费小程序开发平台官网
  • 浙江建设厅网站 打不开鞍山网络推广
  • 网店美工课程总结seo网站平台
  • 天津疫情最新消息今天南京seo关键词优化预订
  • 网站制作咨询百度搜索引擎推广怎么弄
  • 铁岭市做网站域名注册查询系统
  • 北京网站建设 公司semicircle
  • 丽江手机网站建设竞价排名是按照什么来计费的
  • 网站载入页面怎么做品牌运营公司