stm32_HSI

发布者:科技奇才最新更新时间:2020-02-24 来源: eefocus关键字:stm32  HSI  启动 手机看文章 扫描二维码
随时随地手机看文章

stm32启动时使用的是外部8M晶振,在system_stm32f10x.c文件中有定义,且使用的函数为void SystemInit (void)

使用外部晶振HSE时的代码如下

void SystemInit (void)

{

//  /* Reset the RCC clock configuration to the default reset state(for debug purpose) */

//  /* Set HSION bit */

//  RCC->CR |= (uint32_t)0x00000001;



//  /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */

//#ifndef STM32F10X_CL

//  RCC->CFGR &= (uint32_t)0xF8FF0000;

//#else

//  RCC->CFGR &= (uint32_t)0xF0FF0000;

//#endif /* STM32F10X_CL */   

//  

//  /* Reset HSEON, CSSON and PLLON bits */

//  RCC->CR &= (uint32_t)0xFEF6FFFF;



//  /* Reset HSEBYP bit */

//  RCC->CR &= (uint32_t)0xFFFBFFFF;



//  /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */

//  RCC->CFGR &= (uint32_t)0xFF80FFFF;



//#ifdef STM32F10X_CL

//  /* Reset PLL2ON and PLL3ON bits */

//  RCC->CR &= (uint32_t)0xEBFFFFFF;



//  /* Disable all interrupts and clear pending bits  */

//  RCC->CIR = 0x00FF0000;



//  /* Reset CFGR2 register */

//  RCC->CFGR2 = 0x00000000;

//#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)

//  /* Disable all interrupts and clear pending bits  */

//  RCC->CIR = 0x009F0000;



//  /* Reset CFGR2 register */

//  RCC->CFGR2 = 0x00000000;      

//#else

//  /* Disable all interrupts and clear pending bits  */

//  RCC->CIR = 0x009F0000;

//#endif /* STM32F10X_CL */

//    

//#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)

//  #ifdef DATA_IN_ExtSRAM

//    SystemInit_ExtMemCtl(); 

//  #endif /* DATA_IN_ExtSRAM */

//#endif 



//  /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */

//  /* Configure the Flash Latency cycles and enable prefetch buffer */

//  SetSysClock();



//#ifdef VECT_TAB_SRAM

//  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */

//#else

//  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */

//#endif 

}







现在改为使用内部晶振

void SystemInit (void)

{

RCC->CR |= (uint32_t)0x00000001; 



/*选择HSI为PLL的时钟源HSI必须2分频给PLL*/

RCC->CFGR |= (uint32_t)RCC_CFGR_PLLSRC_HSI_Div2; 

 

/*PLLCLK=8/2*13=52MHz   设置倍频得到时钟源PLL的频率*/

RCC->CFGR |= (uint32_t)RCC_CFGR_PLLMULL4;          //四倍频



/* PLL不分频输出  */

RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

 

/* 使能 PLL时钟 */

RCC->CR |= RCC_CR_PLLON;



/* 等待PLL时钟就绪*/

while((RCC->CR & RCC_CR_PLLRDY) == 0);



/* 选择PLL为系统时钟的时钟源 */

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    


/* 等到PLL成为系统时钟的时钟源*/

while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08);

}

倍频备注:倍频可以从6M到45M,通过修改RCC_CFGR_PLLMULL4,此处与数据手册说法有一点不符合,但是通过示波器实际测出是可以的。计算公式system_clk=6M/2*倍频数

至于为何是6M,怀疑可能是内部RC晶振有点问题或者配置问题待解决


使用内部RC晶振时,delay函数不能用,计时不准确

关键字:stm32  HSI  启动 引用地址:stm32_HSI

上一篇:STM32F1一种相对简单的使用HSI配置系统时钟为64MHz的方法
下一篇:嵌入式STM32学习笔记(2)——点亮LED灯及用中断让其闪烁

推荐阅读最新更新时间:2024-11-09 07:28

STM32硬件错误的调试技巧
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。 这说明STM32出现了硬件错误。 硬件错误中断 STM32出现硬件错误可能有以下原因: 数组越界操作; 内存溢出,访问越界; 堆栈溢出,程序跑飞; 中断处理错误; 遇到这种情况,可以通过以下2种方式来定位到出错代码段。 方法1: 在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击STOP停止仿真。 示例 1.2 在Keil菜单栏点击View——Registers Window,在寄存器查看窗口查找R14(LR)的值。 如果R
[单片机]
<font color='red'>STM32</font>硬件错误的调试技巧
STM32的AD9854 DDS模块调试总结
  DDS基本原理和特点   1、DDS基本原理   直接频率合成技术实际上是通过将存储的波形数据,通过特定算法,经过高速D/A转换器转换成所需要模拟信号的数字合成技术。其基本原理框图如图1所示。   由图1可见,其主要由标准参考频率源、相位累加器、波形存储器、数/模转换器等部分组成。其中,参考频率源一般是一个高稳定的晶体振荡器,其输出信号用于DDS中各部件同步工作。当频率合成器正常工作时,在标准频率参考源的控制下(频率控制字K决定了其相位增量),相位累加器则不断地对该相位增量进行线性累加,当相位累加器积满量时就会产生一次溢出,从而完成一个周期性的动作,即合成信号的一个频率周期。累加器的输出地址对波形ROM进行寻址,从而把存
[单片机]
<font color='red'>STM32</font>的AD9854 DDS模块调试总结
基于STM32的多路电压采集的设计与实现
1.引言 近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。 数据采集技术是信息科学的重要分支之一,数据采集也是从一个或多个信号获取对象信息的过程。数据采集是工业控制等系统中的重要环节,通常采用一些功能相对独立的单片机系统来实现,作为测控系统不可缺少的部分,数据采集的性能特点直接影响到整个系统。 电压的测量最为普遍性,研究设计并提高电压测量精度的方法及仪器具有十分重要的意义。在电压测量设计中,单片机作为控制器,是整个设计的核心。除此之外,设计中还必须有模数转换器(ADC)。ADC用于直接采集模拟电压并将模拟信号转换成数字信号,它直接影响着数据采集的精度和速度。
[单片机]
基于<font color='red'>STM32</font>的多路电压采集的设计与实现
解析STM32启动过程及STM32 启动文件选择
STM32 启动文件选择 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 互联型产品是指STM32F105xx和STM32F107xx微控制器。 - startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices - st
[单片机]
在Keil环境编程中发现STM32内存管理存在的问题
非常简单的一个工程,没有用到任何IO操作,与STM32有关的仅仅只有芯片的选择,即其SRAM大小有区别。图1是工程示意图,从图中可以看出,除了自己编写的代码外,仅仅增加了2个文件,即system_stm32f10x.c和startup_stm32f10x_hd.s,其中为了对startup_stm32f10x_hd.s进行修改,将其从库文件夹复制到了项目文件夹中。 图1 代码1 int main() { int a,b,c,d; a=10;b=20; c=a+b; for(;;); } myex1.c(3): warning: #550-D: variable c was set but never used linkin
[单片机]
在Keil环境编程中发现<font color='red'>STM32</font>内存管理存在的问题
STM32系列微控制器新型存储器扩展技术--FSMC有什么优点?
引言 STM32是ST(意法半导体)公司推出的基于ARM内核Cortex-M3的32位微控制器系列。Cortex-M3内核是为低功耗和价格敏感的应用而专门设计的,具有突出的能效比和处理速度。通过采用Thumb-2高密度指令集,Cortex-M3内核降低了系统存储要求,同时快速的中断处理能够满足控制领域的高实时性要求,使基于该内核设计的STM32系列微控制器能够以更优越的性价比,面向更广泛的应用领域。 STM32系列微控制器为用户提供了丰富的选择,可适用于工业控制、智能家电、建筑安防、医疗设备以及消费类电子产品等多方位嵌入式系统设计。STM32系列采用一种新型的存储器扩展技术——FSMC,在外部存储器扩展方面具有独特的优势,可根
[单片机]
<font color='red'>STM32</font>系列微控制器新型存储器扩展技术--FSMC有什么优点?
stm32gpio的工作模式
1、推挽输出 可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补 信号 的控制,总是在一个三极管导通的时候另一个截止。高低电平由 IC 的 电源 决定。 推挽电路是两个 参数 相同的三极管或 MOSFET ,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌 电流 ,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 2、开漏输出 输出端相当于三极管的集电极,要得到高电平状态需要上拉 电阻 才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。 3、浮空输入 对于浮空输
[单片机]
stm32gpio的工作模式
STM32-自学笔记(2.ARMCortex-M3内核构架)
Cortex-M3 的CPU:32位CPU cpu的两种运行模式:线程模式(Thread)和处理模式(Handler)。 cpu不处理异常事件时,会运行在线程(Thread)模式下。而当cpu需要处理一个异常事件时,就会切换到处理(Handler)模式下。 此外 Cortex-M3的cpu还有两种处理代码的方式:私有模式和非私有模式。 私有模式下,cpu可以执行所有指令。 非私有模式下,部分指令是被禁止执行的(xPSR寄存器操作的MRS和MSR指令)。同时也不能对cpu的系统控制区中的寄存器进行进行操作。 另外,堆栈的使用也是可以设置的,主堆栈在线程模式和处理模式下都可以使用。通过设置,Handler模式也可以使用进程堆
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved