当前位置:文档之家› PTN 1588V2 时钟配置指导

PTN 1588V2 时钟配置指导

SPI时钟模式的配置

SPI时钟模式的配置 【SPI基础知识简介】设备与设备之间通过某种硬件接口通讯,目前存在很多

种接口,SPI接口是其中的一种。 SPI中分Master主设备和Slave从设备,数据发送都是由Master控制。 —个master可以接一个或多个slave o 常见用法是一个Master接一个slave,只需要4根线: SCLK : Serial Clock,(串行)时钟 MISO : Master In Slave Out,主设备输入,从设备输出 MOSI : Master Out Slave In,主设备输出,从设备输入 SS: Slave Select,选中从设备,片选 SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在EEPROM, FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 即一个SPI的Master通过SPI与一个从设备,即上述的那些Flash, ADC等,进行通讯。 而主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量好了,要匹配,否则,就没法正常通讯了,即保证时序上的一致才可正常讯。 而这里的SPI中的时钟和相位,指的就是SCLk时钟的特性,即保证主从设备两者的时钟的特性一致了,以保证两者可以正常实现SPI通讯。

【SPI相关的缩写或说法】 先简单说一下,关于SPI中一些常见的说法: SPI的极性Polarity和相位Phase,最常见的写法是CPOL和CPHA,不过也有 —些其他写法,简单总结如下: (1)CKPOL (Clock Polarity) = CPOL = POL = Polarity =(时钟)极性 (2)CKPHA (Clock Phase) = CPHA = PHA = Phase =(时钟)相位 (3)SCK二SCLK二SPI 的时钟 ⑷Edge=边沿,即时钟电平变化的时刻,即上升沿(rising edge)或者下降沿 (falling edge) 对于一个时钟周期内,有两个edge,分别称为: Leading edge=前一个边沿二第一个边沿,对于开始电压是1,那么就是1变成0 的时候,对于开始电压是0,那么就是0变成1的时候; Trailing edge二后一个边沿二第二个边沿,对于开始电压是1,那么就是0变成1 的时候(即在第一次1变成0之后,才可能有后面的0变成1),对于开始电压是0,那么就是1变成0的时候; 本文采用如下用法? 极性二CPOL 相位=CPHA SCLK二时钟 第一个边沿和第二个边沿

RCC时钟配置

时钟配置RCC_Configuration() 在比较靠前的版本中,我们需要向下面那样设置时钟: ErrorStatus HSEStartUpStatus; /*********************************************************************** *************** * FunctionName : RCC_Configuration() * Description : 时钟配置 * EntryParameter : None * ReturnValue : None ************************************************************************ **************/ void RCC_Configuration(void) { /* 复位所有的RCC外围设备寄存器,不改变内部高速振荡器调整位(HSITRIM[4..0])以及 备份域控制寄存器(RCC_BDCR),控制状态寄存器RCC_CSR */ RCC_DeInit(); // RCC system reset(for debug purpose) /* 开启HSE振荡器*/ /* 三个参数: RCC_HSE_ON-开启RCC_HSE_OFF-关闭RCC_HSE_BYPASS-使用外部时钟振荡器*/ RCC_HSEConfig(RCC_HSE_ON); // Enable HSE /* HSEStartUpStatus为枚举类型变量,2种取值,0为ERROR,非0为SUCCESS 等待HSE准备好,若超时时间到则退出*/ HSEStartUpStatus = RCC_WaitForHSEStartUp(); // Wait till HSE is ready if (HSEStartUpStatus == SUCCESS) // 当HSE准备完毕切振荡稳定后 { /* 配置AHB时钟,这个时钟从SYSCLK分频而来分频系数有1,2,4,8,16,64,128,256,512 */ RCC_HCLKConfig(RCC_SYSCLK_Div1); // HCLK = SYSCLK /* 设置低速APB2时钟,这个时钟从AHB时钟分频而来分频系数为1,2,4,8,16 */ RCC_PCLK2Config(RCC_HCLK_Div1); // PCLK2 = HCLK /* 设置低速APB1时钟,这个时钟从AHB时钟分频而来分频系数为1,2,4,8,16 */ RCC_PCLK1Config(RCC_HCLK_Div2); // PCLK1 = HCLK/2 FLASH_SetLatency(FLASH_Latency_2); // Flash 2 wait state FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // Enable Prefetch Buffer /* 设置PLL的时钟源和乘法因子 第一个入口参数为时钟源,共有3个 RCC_PLLSource_HSI_Div2 RCC_PLLSource_HSE_Div1

stm32如何配置时钟

学习STM32笔记2 如何配置时钟 学习STM32笔记2 如何配置时钟 /************************************************************* 该程序目的是用于测试核心板回来后是否能正常工作。包括 两个按键、两个LED现实。按键为PC4、PC5,LED为PA0\PA1。LED为 低电平时点亮。按键为低电平时触发。 ************************************************************/ #i nclude "stm32f10x_lib.h" void RCC_Configuration(void);//设置系统主时钟 void GPIO_Configuration(void);//设置邋邋IO参数 void NVIC_Configuration(void);//设置中断表地址 void delay(void);//延时函数 int main(void) { #ifdef DEBUG debug(); #endifRCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); while (1) { delay(); //设置指定的数据端口位 GPIO_SetBits(GPIOA,GPIO_Pin_0); //设置指定的数据端口位 delay(); GPIO_ResetBits(GPIOA,GPIO_Pin_0); //清除指定的数据端口位 GPIO_SetBits(GPIOA,GPIO_Pin_1); delay(); GPIO_ResetBits(GPIOA,GPIO_Pin_1); delay(); /********************************************* 使用setbits 与resetbits 是比较简单,其实还是可以使用 其它函数。例如可以使用GPIO_WriteBit GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET); GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);对于好像流水灯呀这些一个整段IO,可以使用GPIO_Write(GPIOA, 0x1101); *********************************************/

学习STM32笔记2如何配置时钟

学习STM32笔记2 如何配置时钟* 学习STM32笔记2 如何配置时钟 原创笔记2009-09-20 19:56 阅读116 评论0 字号:大中小 /************************************************************* 该程序目的是用于测试核心板回来后是否能正常工作。包括 两个按键、两个LED现实。按键为PC4、PC5,LED为PA0\PA1。LED为 低电平时点亮。按键为低电平时触发。 ************************************************************/ #i nclude "stm32f10x_lib.h" void RCC_Configuration(void);//设置系统主时钟 void GPIO_Configuration(void);//设置邋邋IO参数 void NVIC_Configuration(void);//设置中断表地址 void delay(void);//延时函数 int main(void) { #ifdef DEBUG debug(); #endifRCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); while (1) { delay(); //设置指定的数据端口位 GPIO_SetBits(GPIOA,GPIO_Pin_0); //设置指定的数据端口位 delay(); GPIO_ResetBits(GPIOA,GPIO_Pin_0); //清除指定的数据端口位 GPIO_SetBits(GPIOA,GPIO_Pin_1); delay(); GPIO_ResetBits(GPIOA,GPIO_Pin_1); delay(); /********************************************* 使用setbits 与resetbits 是比较简单,其实还是可以使用 其它函数。例如可以使用GPIO_WriteBit GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET); GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);对于好像流水灯呀这些一个整段IO,可以使用GPIO_Write(GPIOA, 0x1101); *********************************************/

stm32系统时钟配置问题

stm32系统时钟配置问题 系统从上电复位到72mz 配置好之前,提供时钟的是内如高速rc 振荡器提 供8MZ 的频率,这个由下面void SystemInit (void)函数的前面的一部分代码来 完成的和保证的:RCC->CR |= (uint32_t)0x00000001; #ifndef STM32F10X_CLRCC->CFGR &= (uint32_t)0xF8FF0000;#elseRCC- >CFGR &= (uint32_t)0xF0FF0000;#endif RCC->CR &= (uint32_t)0xFEF6FFFF; RCC->CR &= (uint32_t)0xFFFBFFFF; RCC->CFGR &= (uint32_t)0xFF80FFFF; #ifdef STM32F10X_CLRCC->CR &= (uint32_t)0xEBFFFFFF; RCC->CIR = 0x00FF0000; RCC->CFGR2 = 0x00000000;#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)RCC->CIR = 0x009F0000; RCC->CFGR2 = 0x00000000;#elseRCC->CIR = 0x009F0000;#endif#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)#ifdef DATA_IN_ExtSRAMSystemInit_ExtMemCtl();#endif#endif 接着void SystemInit (void)调用SetSysClock();函数,将系统时钟配置到 72m,将AHB,APB1,APB2 等外设之前的时钟都配置好,然后切换到72mz 下 运行。所以在使用哪个外设的时候,只需要使能相应的外设时钟就可以了 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

SPI时钟模式的配置

S P I时钟模式的配置集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]

【S P I基础知识简介】 设备与设备之间通过某种硬件接口通讯,目前存在很多种接口,SPI接口是其中的一种。 SPI中分Master主设备和Slave从设备,数据发送都是由Master控制。 一个master可以接一个或多个slave。 常见用法是一个Master接一个slave,只需要4根线: SCLK:SerialClock,(串行)时钟 MISO:MasterInSlaveOut,主设备输入,从设备输出 MOSI:MasterOutSlaveIn,主设备输出,从设备输入 SS:SlaveSelect,选中从设备,片选 SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 即一个SPI的Master通过SPI与一个从设备,即上述的那些Flash,ADC等,进行通讯。 而主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量好了,要匹配,否则,就没法正常通讯了,即保证时序上的一致才可正常讯。 而这里的SPI中的时钟和相位,指的就是SCLk时钟的特性,即保证主从设备两者的时钟的特性一致了,以保证两者可以正常实现SPI通讯。 【SPI相关的缩写或说法】 先简单说一下,关于SPI中一些常见的说法: SPI的极性Polarity和相位Phase,最常见的写法是CPOL和CPHA,不过也有一些其他写法,简单总结如下: (1)CKPOL(ClockPolarity)=CPOL=POL=Polarity=(时钟)极性 (2)CKPHA(ClockPhase)=CPHA=PHA=Phase=(时钟)相位 (3)SCK=SCLK=SPI的时钟 (4)Edge=边沿,即时钟电平变化的时刻,即上升沿(risingedge)或者下降沿(fallingedge) 对于一个时钟周期内,有两个edge,分别称为: Leadingedge=前一个边沿=第一个边沿,对于开始电压是1,那么就是1变成0的时候,对于开始电压是0,那么就是0变成1的时候; Trailingedge=后一个边沿=第二个边沿,对于开始电压是1,那么就是0变成1的时候(即在第一次1变成0之后,才可能有后面的0变成1),对于开始电压是0,那么就是1变成0的时候;

STM32学习笔记(3):系统时钟和SysTick定时器

STM32学习笔记(3):系统时钟和SysTick定时器 1.STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1)HSI是高速内部时钟,RC振荡器,频率为8MHz; (2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz; (3)LSI是低速内部时钟,RC振荡器,频率为40KHz; (4)LSE是低速外部时钟,接频率为32.768KHz的石英晶体; (5)PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL 的输入可以接HSI/2、HSE或者HSE/2。倍频可选择为2 – 16倍,但 是其输出频率最大不得超过72MHz。 其中,40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。 STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为 48MHz的时钟源。该时钟源只能从PLL端获取,可以选择为1.5分频或者1分频,也就是,当需使用到USB模块时,PLL必须使能,并且时钟配置为48MHz 或72MHz。 另外STM32还可以选择一个时钟信号输出到MCO脚(PA.8)上,可以选择为PLL输出的2分频、HSI、HSE或者系统时钟。 系统时钟SYSCLK,它是提供STM32中绝大部分部件工作的时钟源。系统时钟可以选择为PLL输出、HSI、HSE。系系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各个模块使用,AHB分频器可以选择1、2、4、8、16、64、128、256、512分频,其分频器输出的时钟送给5大模块使用: (1)送给AHB总线、内核、内存和DMA使用的HCLK时钟; (2)通过8分频后送给Cortex的系统定时器时钟; (3)直接送给Cortex的空闲运行时钟FCLK; (4)送给APB1分频器。APB1分频器可以选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一

STM32时钟系统与软件配置

STM32时钟系统与软件配置 在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。 2)对于少于100脚的产品,有2种接法: 2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。 2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'。此方法可以减小功耗并(相对上面2.1)节省2个外部电阻。 使用HSE时钟,程序设置时钟参数流程: 1、将RCC寄存器重新设置为默认值RCC_DeInit; 2、打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON); 3、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp(); 4、设置AHB时钟RCC_HCLKConfig; 5、设置高速AHB时钟RCC_PCLK2Config; 6、设置低速速AHB时钟RCC_PCLK1Config;

stm32f030时钟配置工具AN4055

May 2012Doc ID 022837 Rev 11/17 AN4055 Application note Clock configuration tool for STM32F0xx microcontrollers Introduction This application note presents the clock system configuration tool for the STM32F0xx microcontroller family. The purpose of this tool is to help the user configure the microcontroller clocks, taking into consideration product parameters such as power supply and Flash access mode. The configuration tool is implemented in the “STM32F0xx_Clock_Configuration_VX.Y .Z.xls” file which is supplied with the STM32F0xx Standard Peripherals Library and can be downloaded from https://www.doczj.com/doc/b07161622.html, . This tool supports the following functionalities for the STM32F0xx: ● Configuration of the system clock, HCLK source and output frequency ● Configuration of the Flash latency (number of wait states depending on the HCLK frequency)● Setting of the PCLK1, PCLK2, TIMCLK (timer clocks) and I2SCLK frequencies ●Generation of a ready-to-use system_stm32f0xx.c file with all the above settings (STM32F0xx CMSIS Cortex-M0 Device Peripheral Access Layer System Source File)The STM32F0xx_Clock_Configuration_VX.Y .Z.xls is referred to as “clock tool” throughout this document. Before using the clock tool, it is essential to read the STM32F0xx microcontroller reference manual (RM0091). This application note is not a substitute for the reference manual.This tool supports only the STM32F0xx devices. For VX.Y .Z, please refer to the tool version, example V1.0.0 https://www.doczj.com/doc/b07161622.html,

锁相环配置时钟

锁相环配置时钟 锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。下面记一下怎样配置锁相环来设定想要的系统时钟。 锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG中的模块,固前面用到的寄存器,这里有些会再用到。 在程序中配置锁相环的步骤如下: 第一、禁止总中断; 第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。 CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK为外部晶振频率)。CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。 第三、禁止锁相环PLL,即PLLCTL_PLLON=0。 当PLLCTL_PLLON=0时,关闭PLL电路。当PLLCTL_PLLON=1时,打开PLL电路。 第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。 SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是: PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) 其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV 分别为寄存器SYNR、REFDV中的值。这两个寄存器只有在PLLSEL=0时才能

够写入(这里就是第二步的设置原因所在了)。 第五、打开PLL,即PLLCTL_PLLON=1。 第六、CRGFLG_LOCK位,确定PLL是否稳定。 当锁相环PLL电路输出的频率达到目标频率的足够小的误差范围内时,LOCK位置1,此时说明PLLCLK已经稳定,可以作为系统的时钟了。该位在正常情况下为只读位。 第七、PLLCLK稳定后,允许锁相环时钟源PLLCLK为系统提供时钟,即CLKSEL_PLLSEL=1。 到这里,锁相环的设置就完毕了。

stm32时钟详解

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 其实是四个时钟源,如下图所示(灰蓝色),PLL是由锁相环电路倍频得到PLL时钟。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

其中40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。RTC的时钟源通过RTCSEL[1:0]来选择。 STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是,当需要使用USB模块时,PLL必须使能,并且时钟频率配置为48MHz或72MHz。 另外,STM32还可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。 系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE。系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。其中AHB分频器输出的时钟送给5大模块使用: ①、送给AHB总线、内核、内存和DMA使用的HCLK时钟。 ②、通过8分频后送给Cortex的系统定时器时钟。 ③、直接送给Cortex的空闲运行时钟FCLK。 ④、送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)2、3、4倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2、3、4使用。 ⑤、送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。 在以上的时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。 需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。

配置时钟

配置时钟 介绍如何配置时钟数据,包括配置参考源、时钟板和线路时钟源。 前提条件 设备已正确配置机框和单板。 时钟系统 时钟系统为UMG8900设备提供内部系统所必要的时钟信号,通过接入外部各种标准的参考时钟信号,提供电信网络设备所需要的2/3级精度时钟。 时钟系统的核心处理单元为独立的时钟单板CLK或者位于TNC单板上的时钟扣板。采用独立CLK 时钟单板时,系统可以提供2/3级精度时钟;采用TNC时钟扣板时,只能提供3级精度时钟。CLK 板或者TNC板上的时钟扣板通过跟踪外部基准信号、过滤外基准的抖动、漂移等,使其本身输出的时钟信号具有高频率准确度和稳定度,为系统提供一个优良的时钟源。 采用独立CLK时钟单板时,时钟系统支持2Mbit/s、1.5Mbit/s、2MHz、64kHz、8kHz线路时钟、GPS(Global Positioning System)/GLONASS(Global Navigation Satellite System)时钟参考源;采用时钟扣板方式时,时钟系统支持2Mbit/s、2MHz、8kHz线路时钟参考源。 时钟系统同时提供BITS时钟输出接口,可以与下级设备连接,为下级设备提供BITS时钟信号参考源。 系统支持通过软件灵活选择外部时钟参考源和输出时钟等级。 SSM简介 SSM (Synchronization Status Message) 同步状态信息,是指示时钟等级的一个信息,对于E1信号,G.704中定义用奇数帧0时隙(TS0)的Sa4~Sa8来传递SSM,对于T1信号,G.704中定义用复帧中奇数帧第一个bit组成的4kbit/s数据链路来传递SSM。 对于E1信号传递SSM信息的位置如图1所示。

STM32F103RC系统时钟配置

地址:安徽省、合肥市、肥东县、店埠镇,合肥市福来德电子科技有限公司 STM32F103RC 系统时钟配置 1、打开D:\program\KEL_MDT_ARM\STM32_Template\USER 目录,找到STM32-DEMO 文件,双击打开,KEIL-uVision4就开始运行了,得到下图: 2、双击“STARTCODE ”下面的“start_stm32f10x_hd.s ”打开STM32F103RC 的启动文件,找“SystemInit ”,得到下图:

地址:安徽省、合肥市、肥东县、店埠镇,合肥市福来德电子科技有限公司3、点击当前的行,右击鼠标,将光标移动到“Go To Definition Of SystemInit”,见下图: 4、点击“Go To Definition Of SystemInit ”,会跳转到system_stm32f10x.c 文件,见下图:

地址:安徽省、合肥市、肥东县、店埠镇,合肥市福来德电子科技有限公司5、在“system_stm32f10x.c ”文件中,在“void SystemInit (void)”函数体内找到“SetSysClock();”,见下图: 6、点击“SetSysClock()”,右击鼠标,将光标移动到“Go To Definition Of SystemClock”,见下图:

地址:安徽省、合肥市、肥东县、店埠镇,合肥市福来德电子科技有限公司 7、点击“Go To Definition Of SystemClock”,会跳转到system_stm32f10x.c 文件,见下图: 8、点击“defined SYSCLK_FREQ_72MHz ”,右击鼠标,将光标移到到“Go To Definition Of SYSCLK_FREQ_72MHz ”,见下图:

STM32系统时钟配置

STM32系统时钟配置 STM32 在使用不同时钟晶振时,需要对系统时钟进行配置。下面以16MHz晶振产生72MHz时钟为例进行说明。 由于STM32可进行整数倍倍频,及可选是否2分频。因而选用16MHz 晶振时,先2分频,再倍频9倍,即可倍频为72MHz。 ①查找SystemInit() 函数,即系统时钟设置: 图1

②进入 SetSysClockTo72() 函数,如果要设置其他频率,进入对应的频率即可,如SetSysClockTo48()。 ③参考 STM32中文参考手册的6.3.2时钟配置寄存器(RCC_CFGR)。如“位17PLLXTPRE ” 所述: HSE分频器作为PLL输入(HSE divider for PLL entry) 由软件置’1’或清’0’来分频HSE后作为PLL输入时钟。只能在关闭PLL时 才能写入此位。 0:HSE不分频 1:HSE 2分频 因而,RCC_CFGR 寄存器的位17 应置“1”。 ④如图2红色框中所示, RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9|RCC_CFGR_PLLXTPRE); 添加红色字部分即可完成2分频,则可将16MHz的时钟分频为 8MHz。其实,查找RCC_CFGR_PLLXTPRE宏定义可知: #define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) 实际上就是将位 17置1。 而RCC_CFGR_PLLMULL9中的9即是倍频倍数。(8*9=72 MHz)

时钟配置概述

时钟配置概述 时钟同步是一个容易忽视的问题,由于某方面的原因,由于时钟不配置也不会影响业务的正常开通,有时在新开站点的时候很容易就忽略对时钟的配置。造成SDH网络长期处于时钟不健康运行的状态。很容易造成SDH网络性能的下降,误码增加,基站通话质量下降,甚至引起基站掉话,严重会引起基站中断。对整个SDH网络性能将会造成极大的影响。 今天我们就简单的讨论一下时钟的跟踪原理以及我们目前所使用的成熟的时钟跟踪技术。 SDH网络,众所周知,是一个全网同步的网络。要求SDH 整个大网必须跟踪同一个时钟源。那么,如果全网不跟踪同一个BITS时钟会有什么结果呢。 结果是,刚开始网络性能各方面能够正常运行,但经过一段时间后。如48小时后,网络会逐渐出现性能劣化,通过网管可以发现大量的指针调整。 那么,既然全网跟踪同一个时钟那么重要,那么我们就全网都跟踪同一个时钟嘛,但是不是跟踪了同一个时钟,实现了全网的同步,时钟这块就算配置完了,网络性能就能达到要求了? 答案是肯定的。SDH网络时钟很简单,只要保障的全网跟踪同一个时钟,即全网同步(我们常说的主从同步)就完全没有问题。 下面以图为例说明时钟跟踪全网同步的配置模型及配置步

骤。 这里以一个相交环下挂一个链的组网方式来介绍时钟的配置步骤。组网拓扑图如下所示: 其中5-1指的是5槽位1光口,其它以些类推。A点跟踪BITS时钟。D点跟踪11光口和8光口来的时钟,为了防止时钟成环,需启用扩展SSM协议。B、C、E、F、G、均跟踪环路的两个方向,并启用扩展SSM协议。这里需要指出,B、C两个点由于在两个环上。这里就只跟踪离BITS时钟最近的两个方向,实际上就是跟踪两个2.5G光口的时钟信号。 配置完成后,时钟跟踪的方向如图所示:

STM32芯片时钟配置

对STM32进行软件开发时,最基本的就是对STM32芯片进行时钟和端口配置,然后是对项目所用到的片上资源进行配置并驱动,下面给出时钟和端口配置代码,该代码几乎涵盖了片上所有时钟和端口配置项目,可根据自己需要进行删除不必要的配置项: /****************************************************************** * Function Name :RCC_Configuration 复位时钟控制配置 * Description : Configures the different system clocks. * Input : None * Output : None * Return : None *******************************************************************/ void RCC_Configuration(void) { /* system clocks configuration -----系统时钟配置----*/ /* RCC system reset(for debug purpose) */ RCC_DeInit(); //将外设RCC寄存器重设为缺省值 /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON);//开启外部高速晶振(HSE) /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp();//等待HSE起振 if(HSEStartUpStatus == SUCCESS) //若成功起振,(下面为系统总线时钟设置) { /* Enable Prefetch Buffer */

STM32时钟设置浅析

STM32时钟浅析 时钟设置是所有单片机编程首先要解决的问题,只有时钟理解正确了,以后的编程才会让程序达到事半功倍的效果,尤其是对于定时,通信的设置是极为重要的。我在这里以个人之见,来理解void SystemInit (void) 函数的时钟设置问题,它的原函数是这样写的: void SystemInit (void) { /*以下语句都是对RCC_RC、RCC_CFGR和RCC_CIR寄存器给予赋值,配置相应位*/ /*!< RCC system reset(for debug purpose) */ /*!< Set HSION bit 复位值是83H 内部8M*/ RCC->CR |= (uint32_t)0x00000001;//RCC_RC=0x00000001,时钟中断寄存器使能/*!< Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], ADCPRE[1:0] and MCO[2:0] bits */ RCC->CFGR &= (uint32_t)0xF8FF0000;//时钟配置寄存器RCC_CFGR=0x****0000; /*!< Reset HSEON, CSSON and PLLON bits */ RCC->CR &= (uint32_t)0xFEF6FFFF; /*!< Reset HSEBYP bit */ RCC->CR &= (uint32_t)0xFFFBFFFF; /*!< Reset PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE bits */ RCC->CFGR &= (uint32_t)0xFF80FFFF; /*!< Disable all interrupts */ RCC->CIR = 0x00000000; //时钟中断寄存器RCC_CIR=0; /*!< Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */ /*!< Configure the Flash Latency cycles and enable prefetch buffer */ SetSysClock(); } RCC->CR |= (uint32_t)0x00000001; 就是时钟控制寄存器RCC_RC=0x00000001, 查询STM32F10XX手册可以得到如图所示: 可以看出该语句就是使RSION=1,也就是

STM32时钟详细配置

STM32时钟配置 STM32时钟配置步骤// 开启HSI时钟寄存器操作 1).开启高速时钟HSE // 设置时钟控制寄存器RCC_CR 位16 置1使能 RCC->CR|= 0x00010000; 位16 :HSEON:外部高速时钟使能 当进入待机和停止模式时,该位由硬件清零,关闭4-16MHz外部振荡器。当外部4-16MHz 振荡器被用作或被选择将要作为系统时钟时,该位不能被清零。 2).等待高速时钟就绪// 读取时钟控制寄存器RCC_CR位17为1就位 while(!(RCC-> CR>>17)); 位17:HSERDY:外部高速时钟就绪标志 由硬件置’1’来指示外部4-16MHz振荡器已经稳定。在HSEON位清零后,该位需要6个外部4-25MHz振荡器周期清零。 3).设置APB1,APB2,AHB分频系数// 设置时钟配置寄存器RCC_CFGR RCC_CFGR=0x00000400; (AHB :位4-7, (低速)APB1 :位8-10, (高速)APB2 :位11-13) 位7:4:HPRE[3:0]:AHB预分频(AHB Prescaler)0xxx:SYSCLK不分频 位10:8:PPRE1[2:0]:低速APB预分频(APB1) 100:HCLK 2分频 位13:11:PPRE2[2:0]:高速APB预分频(APB2) 0xx:HCLK不分频 4).设置PLL倍频// 配置时钟配置寄存器RCC_CFGR 位18-21 RCC_CFGR|=7<<18; 位21:18:PLLMUL:PLL倍频系数0111:PLL 9倍频输出 5).PLL输入时钟源选择// 配置时钟配置寄存器RCC_CFGR 位16 RCC_CFGR|=1<<16; 位16:PLLSRC:PLL输入时钟源(PLL entry clock source) 1:HSE时钟作为PLL输入时钟。由软件置’1’或清’0’来选择PLL输入时钟源。只能在关闭PLL时才能写入此位6).设置FLASH延时周期//48ACR|=0x32; 7).PLL使能// 设置时钟控制寄存器RCC_CR 位24 RCC_CR|=0X01000000; 位24:PLLON:PLL使能1:PLL使能当进入待机和停止模式时,该位由硬件清零。当PLL时钟被用作或被选择将要作为系统时钟时,该位不能被清零。 8).等待PLL就绪// 设置时钟控制寄存器RCC_CR 位25置1锁定 while(!(RCC_CR>>24)); 位25:PLLRDY:PLL时钟就绪标志1:PLL锁定PLL锁定后由硬件置’1’。 9).设置PLL作为system时钟// 配置时钟配置寄存器RCC_CFGR 位0-1 :10 RCC_CFGR|=0X00000002; 位1:0 SW[1:0]:系统时钟切换10:PLL输出作为系统时钟 在从停止或待机模式中返回时或直接或间接作为系统时钟的HSE出现故障时,由硬件强制选择HSI作为系统时钟(如果时钟安全系统已经启动) 10).等待system时钟稳定// 查看时钟配置寄存器RCC_CFGR位2-3 :10 while((RCC->CFGR & (uint32_t)0x0c) != (uint32_t)0x08) 位3:2:SWS[1:0]:系统时钟切换状态10:PLL输出作为系统时钟; 由硬件置’1’或清’0’来指示哪一个时钟源被作为系统时钟

相关主题
文本预览
相关文档 最新文档