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

网站建设价格槽闸阀数字营销服务商seo

网站建设价格槽闸阀,数字营销服务商seo,做天猫网站多少钱,网站建设公司网站模版一、时钟框图的解读 首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟,由于内部HSI存在较大的误差,因此我们在系统完成上电初始化,之后需要将STM32的时钟切换到外部HSE作为系统时钟,那么我…

一、时钟框图的解读

首先我们知道STM32在上电初始化之后使用的是内部的HSI未经过分频直接通过SW供给给系统时钟,由于内部HSI存在较大的误差,因此我们在系统完成上电初始化,之后需要将STM32的时钟切换到外部HSE作为系统时钟,那么我们需要完成下面一些设置完成切换。首先我们需要打开外部HSE的震荡电路然后,等待外部震荡电路就绪后,在切换PLLTPRE为HSE的1分频,在设置PLLSRC为PLLXTPRE过来的时钟。然后设置PLLMUL倍频系数,然后打开PLL开关等待PLL稳定。然后设置APB1总线为2分频,最后切换系统时钟为PLL输出的时钟。

二、相关寄存器

三、编程实现

#ifndef __SYSTEM_H__
#define __SYSTEM_H__#define uint unsigned inttypedef struct rRCC
{uint CR;uint CFGR;uint CIR;uint APB2RSTR;uint APB1RSTR;uint AHBENR;uint APB2ENR;uint APB1ENR;uint BDCR;uint CSR;uint AHBRSTR;uint CFGR2;	
}RCC_TypeDef;static RCC_TypeDef *RCC = (RCC_TypeDef *)0x40021000;void set_system_clock(void);#endif
#include "system.h"uint HSERDY_FLAG = 0;     //HSE就绪标志
uint PLLRDY_FLAG = 0;     //PLL就绪标志
uint SWRDY_FLAG  = 0;     //时钟切换标志
uint false_time = 0;      //超时时间标志void set_system_clock(void)
{rFLASH_ACR = 0x00000032; //这个用来设置系统时钟于Flash访问时间的比率 根据系统时钟的不同设置的值不同RCC->CR &= (~(0x01 << 16));      //将HSEON这位清零RCC->CR |= (0x01 << 16);         //开启外部HSE振荡器电路do                               //判断外部HSE电路是否就绪{HSERDY_FLAG = ((RCC->CR) & (0x01 << 17));false_time++;}while((false_time < 0x00ffffff) && (HSERDY_FLAG == 0));false_time = 0;if (HSERDY_FLAG != 0)            //如果外部振荡器电路就绪才会执行{ RCC->CFGR &= (~((0x01 << 17) | (0x01 << 16) | (0x0f << 18)));  //设置PLL倍频系数为9倍频RCC->CFGR |= ((0x01 << 16) | (0x0 << 17) | (0x07 << 18));  //设置PLL时钟来源为PREDIV1 并且设置PLLXTPRE不对输入的时钟分频RCC->CR &= (~(0x01 << 24));       //使能PLL时钟RCC->CR |= (0x01 << 24);do {PLLRDY_FLAG = ((RCC->CR) & (0x01 << 25));false_time++;}while((false_time < 0x00ffffff) && (PLLRDY_FLAG == 0));  //等待PLL时钟就绪false_time = 0;if (((RCC->CR) & (0x01 << 25)) != 0){	RCC->CFGR &= (~((0x01 << 22) | (0x07 << 8)));  RCC->CFGR |= ((0x0 << 22) | (0x04 << 8));     //全速USB OTG配置为PLL输出2分频 APB1总线2分频 PLL输出作为系统时钟RCC->CFGR &= ~(0x03 << 0); RCC->CFGR |= (0x02);    //切换系统时钟为PLL输出时钟do{SWRDY_FLAG = ((RCC->CFGR) & (0x03 << 2));false_time++;	}while((false_time < 0x00ffffff) && ((SWRDY_FLAG) == 0));if (((RCC->CFGR) & (0x03 << 2)) != 0)  //判断时钟是否切换成功{}else{while(1);}}}else{while(1);}
}

上面的代码一个是.h文件另一个是.c文件,但是当我们运行上面的代码时我发现了一个问题,当我们将时钟切换到PLL输出作为系统时钟时,系统就不运行了。就死机了。这是为什么呢,通过翻看数据手册发现,系统时钟和内部flah有一些关系,我们来看flash的寄存器就可以发现。

我们来看bit0-2发现,当复位时默认是000,因此系统时钟必须在0到24MHz之间,这时候我们使用的是内部的HSI时钟,时钟只有8MHz,因此这个时候系统是可以正常运行的,但是当我们将时钟切换到外部HSE时,由于我们做了一系列的倍频,因此这个时候系统时钟到了72MHz,因此我们呢这里需要将这个寄存器的值也设置为010,系统就可以正常运行了。

#define FLASH_ACR  0x40022000
#define rFLASH_ACR *((uint *)FLASH_ACR)void set_system_clock(void)
{rFLASH_ACR = 0x00000032;     //这个用来设置系统时钟于Flash访问时间的比率 根据系统时钟的不同设置的值不同RCC->CR &= (~(0x01 << 16));      //将HSEON这位清零RCC->CR |= (0x01 << 16);         //开启外部HSE振荡器电路do                               //判断外部HSE电路是否就绪{HSERDY_FLAG = ((RCC->CR) & (0x01 << 17));false_time++;}while((false_time < 0x00ffffff) && (HSERDY_FLAG == 0));false_time = 0;if (HSERDY_FLAG != 0)            //如果外部振荡器电路就绪才会执行{ RCC->CFGR &= (~((0x01 << 17) | (0x01 << 16) | (0x0f << 18)));  //设置PLL倍频系数为9倍频RCC->CFGR |= ((0x01 << 16) | (0x0 << 17) | (0x07 << 18));  //设置PLL时钟来源为PREDIV1 并且设置PLLXTPRE不对输入的时钟分频RCC->CR &= (~(0x01 << 24));       //使能PLL时钟RCC->CR |= (0x01 << 24);do {PLLRDY_FLAG = ((RCC->CR) & (0x01 << 25));false_time++;}while((false_time < 0x00ffffff) && (PLLRDY_FLAG == 0));  //等待PLL时钟就绪false_time = 0;if (((RCC->CR) & (0x01 << 25)) != 0){	RCC->CFGR &= (~((0x01 << 22) | (0x07 << 8)));  RCC->CFGR |= ((0x0 << 22) | (0x04 << 8));     //全速USB OTG配置为PLL输出2分频 APB1总线2分频 PLL输出作为系统时钟RCC->CFGR &= ~(0x03 << 0);  RCC->CFGR |= (0x02); do{SWRDY_FLAG = ((RCC->CFGR) & (0x03 << 2));false_time++;	}while((false_time < 0x00ffffff) && ((SWRDY_FLAG) == 0));if (((RCC->CFGR) & (0x03 << 2)) != 0){}else{while(1);}}}else{while(1);}
}

http://www.dt0577.cn/news/8164.html

相关文章:

  • 湖北网站设计流程百度百科词条
  • 用动物做网站名seo优化宣传
  • 自己怎么做网站网页排名优化网站
  • 江苏廉政建设网站百度seo优化收费标准
  • 医疗网站建设公司google全球推广
  • 编写 网站 语言今日刚刚发生的军事新闻
  • 山东网站建设市场google推广方式和手段有哪些
  • 还有哪些网站可以做淘宝活动百度seo优化网站
  • 什么样的网站需要icp经营性备案上海今天最新新闻10条
  • 天津建设委员会网站上查询系统电脑编程培训学校哪家好
  • 营销型网站单页面手机网站制作教程
  • 装修公司网站平台网站建设与管理属于什么专业
  • 在手机上创建网站网络搜索引擎
  • vip视频解析网站怎么做的如何在百度上推广业务
  • 兴化建设局网站查关键词
  • 淮南网站制作如何让新网站被收录
  • 泰格豪雅手表官方网站百度引擎搜索入口
  • 网站托管流程深圳网络营销模式
  • 人社局网站建设方案怎么注册一个自己的网址
  • 已注册商标查询官网百度seo怎么优化
  • 台州铭企做的网站如何发布视频赚钱
  • 做网站代理成都网站建设seo
  • 专业做网站的软件怎么做网址
  • 视觉营销网站app推广注册放单平台
  • 谈谈网站开发流程企业查询系统
  • 以3d全景做的网站越秀seo搜索引擎优化
  • 做网站被骗该咋样做域名注册流程和费用
  • 什么是网络营销网络营销的特点有哪些淘宝关键词优化技巧
  • 东莞做网站推广百度客户端官网
  • 政府网站平台日常制度建设百度新站关键词排名