stm32篇--系统初始化

发布者:tau29最新更新时间:2018-12-21 来源: eefocus关键字:stm32  系统初始化 手机看文章 扫描二维码
随时随地手机看文章

跟着程序执行流程走,main是程序入口,在里面进行了各种初始化。


1.时钟配置

      首先是RCC_Configuration(),里面进行了时钟基本的初始化,stm32有多个时钟源:(1)HSI上电默认启动,精度不高(2)HSE外部高速时钟,系统时钟一般采用它,经过PLL倍频;(3)LSE外部低速时钟,一般专门用于RTC;(4)LSI内部低速时钟,精度不高,一般用于IWDGCLK;



void RCC_Configuration(void)

{

  RCC_DeInit();//复位RCC成缺省值

  RCC_HSEConfig(RCC_HSE_ON);//开启HSE的时钟作为PLL的时钟源

  HSEStartUpStatus = RCC_WaitForHSEStartUp();//获取HSE时钟状态

  if(HSEStartUpStatus == SUCCESS)//如果HSE启动成功

  {

    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//开启FLASH的预取功能

    RCC_HCLKConfig(RCC_SYSCLK_Div1);   //配置HCLK,PCLK2,PCLK1,PLL

    RCC_PCLK2Config(RCC_HCLK_Div1); 

    RCC_PCLK1Config(RCC_HCLK_Div1);

    RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);

    while(RCC_GetSYSCLKSource() != 0x04)//检查是否将HSE 倍频后作为系统时钟

    {

    }

  }

 }


   这样,时钟就初始化好了,先复位RCC,然后配置各个时钟源,获取状态并等待成功。如果我们想使用某个功能或引脚,要开启相关时钟源。

 

2.中断向量设置


void NVIC_Configuration(void)

{

#ifdef  VECT_TAB_RAM  

  /* Set the Vector Table base location at 0x20000000 */ 

  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 

#else  /* VECT_TAB_FLASH  */

  /* Set the Vector Table base location at 0x08000000 */ 

  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   

#endif

}

NVIC_SetVectorTable 设置向量表的位置和偏移

NVIC_ VectTab                描述

NVIC_VectTab_FLASH      向量表位于FLASH

NVIC_VectTab_RAM         向量表位于RAM 用于设置各种中断的优先级、与向量表的地址等等

关键字:stm32  系统初始化 引用地址:stm32篇--系统初始化

上一篇:stm32在中断函数里执行初始化函数
下一篇:STM32初识GPIO操作(by woody)

推荐阅读最新更新时间:2024-03-16 16:21

stm32启动方式+上(下)拉电阻 二合一
最近做stm32项目,纠结过其启动方式。 看到篇不错的文章,转载一下。原文格式不太好,内容也有很多奇怪的地方(尤其是第二篇,就先认为原文是原创,只是作者的思路我不懂吧),都一一删改。想看原文的朋友链接如下: http://www.ithao123.cn/content-3065243.html Duanxx的STM32学习: 启动模式,BOOT0和BOOT1详解 http://bluefish.blog.51cto.com/214870/1239098 上拉电阻与下拉电阻的作用 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的
[单片机]
STM32的中断操作(一)——EXTI
前言 在单片机的编程中,中断都是很重要的一个概念。在stm32中,中断有两种,一种是外部中断(EXTI),另一种是定时器中断(SysTick),本篇文章从中断的概念入手,再对外部中断简要的做一些介绍。 一、中断是什么? 相信大家在初学中断这个概念时都听过这样一个例子:如果你一个人在家里正在做饭,这时门铃响了,你选择先去开门,然后再回来做饭,这就是一个浅显易懂的中断的例子,做饭为主程序,而去开门就是中断程序,门铃响起就是中断请求。而如果门铃响起同时电话也响起,那么你决定先去处理哪一件事的过程就是中断优先级的判别过程。 中断的定义如下: 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并
[单片机]
<font color='red'>STM32</font>的中断操作(一)——EXTI
STM32(二)之GPIO操作(1)——之输入输出操作
GPIO是通用输入输出的简称,换句话说,其为MCU可控制的引脚,MCU通过GPIO引脚来与外部设备连接,从而实现与外部通讯、控制以及数据采集的功能。本文以STM32的GPIO为例子来介绍GPIO。 上图所示, 第一部分保护二极管及上下拉电阻 如图所示为保护二极管,用于防止引脚过高或过低的外部电压输入,当引脚的外部电压高于VDD时,上方的二极管导通,当引脚电压低于Vss时,下方的二极管导通,从而便可防止不正常的电压输入GPIO而烧毁内部芯片。但是STM32的引脚不应外接大功率的驱动器件。而第一部分和第七部分之间为上拉电阻和下拉电阻,用于GPIO设置时用于设置上下拉电阻。 第二部分:推挽输出和
[单片机]
STM32 ST-LINK Utility安装及使用
TM32 ST-LINK Utility集成开发环境的安装比较简单(基本上就是一路Next下去)。还是按照常规安装教程(截图)讲述一下吧,以上面下载的“STM32 ST-LINK Utility v4.0.0 setup.exe”软件为例讲述。 1.解压软件,双击“STM32 ST-LINK Utility v4.0.0.exe”,进入准备安装(解压)过程。 2.进入安装向导,点击“Next”。 3.同意许可,点击“Yes”。 4.选择安装路径(这里默认),点击“Next”。 5.进入安装过程,不到一分钟时间。 6.安装最后提示“安装驱动”,点击“下一步”,最后点击“完成”安装完成。 7.点击“F
[单片机]
<font color='red'>STM32</font> ST-LINK Utility安装及使用
如何选择合适的MCU
什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,它受宠若娇,大受工程师和市场的青睐,无芯能出其右。 STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。下面我们以最近最为火爆的两个
[单片机]
如何选择合适的MCU
stm32 adc计算
用STM32自带的ADC读取引脚电压值,读回来的数据怎么转换成单位为V的数值??? V(ADC) = Value(ADC) * V(ref)/4096 (stm32的ADC是12位的,所以ad字的最大值是4096) 其中V(ADC)为算出的电压值;Value(ADC)为采集的AD值;V(ref)为参考电压,一般为3.3V。 比如你STM32的参考电压为3.3v,采集的AD值为1024,那么转换为电压V(ADC) = 1024×3.3/4096 = 0.825V
[单片机]
STM32开发笔记3: STM32F407定时器2-5的使用方法
单片机型号:STM32F407 STM32F4有多种定时器,其中TIM2-TIM5称为通用定时器,具有相似的软件设置及使用方法。在这里还需要注意的是TIM3和TIM4为16位定时器,TIM2和TIM5为32位定时器。 使用TIM2-5可以遵循以下步骤: 1、打开config.h文件,对如下图所示的宏进行设置,设置为0表示不启动相应的定时器,设置为1表示当前定时器定时1ms,设置为2表示当前定时器定时10ms,设置为3表示当前定时器定时100ms,设置为4表示当前定时器为1s。 上图所示的设置结果为,启动定时器2设置为1ms定时,启动定时器5设置为1s定时,定时器3和定时器4没有启动。
[单片机]
<font color='red'>STM32</font>开发笔记3: STM32F407定时器2-5的使用方法
STM32如何收发float类型数据?
在之前文章里提到了共用体用来传输浮点数的用法,但那篇笔记中没有详细介绍,这篇笔记我们一起来看一看具体实例。 实际应用中,我们可能需要两个设备通过串口传输浮点数据: 本篇笔记为了方便演示,使用串口助手模拟其中一个设备,本篇笔记内容如下: 我们创建一个用于管理float类型数据的共用体: unionfloat_data { floatf_data; uint8_tbyte ; }; 数据的流向如: 本次使用串口助手模拟发送设备,省略了第一步,主要看第②、③步。 创建两个共用体变量,用于发送与接收: unionfloat_datarx_float_data,tx_float_data; 收发相关代码: 左
[单片机]
<font color='red'>STM32</font>如何收发float类型数据?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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