STM32F103的复位及时钟控制模块头文件

发布者:DelightfulWish最新更新时间:2016-09-20 来源: eefocus关键字:STM32F103  复位  时钟控制模块  头文件 手机看文章 扫描二维码
随时随地手机看文章
在处理器正常工作前,肯定要做一些初始化工作,其中最主要的一个就是初始化各种时钟。通过对STM32F103的复位及时钟控制(RCC)模块分析之后,自己写了一个RCC的头文件,这样使用起来更方便。头文件中首先定义了最基本的几个寄存器,然后再对每个寄存器中的域使用结构体做了定义,可以直接使用寄存器中的位来操作。注意设置系统时钟时要先设置好FLASH的等待周期,不然程序就可能会跑飞。
该测试工程是在以前的GPIO实验的基础上增加系统时钟初始化代码,设置系统时钟为72M。通过流水灯可以看到,比未配置系统时钟之前(8M)流水灯的速度快了很多。
系统时钟初始化的代码如下:
//以下时钟配置为最高性能
void SystemClockInit(void)
{
 //设置flash等待周期为2,否则设置为72M系统时钟时就会跑飞
 FLASH_ACR=0x32; 
 pbRCC_CR->HSEON=1;          //使能外部高速时钟
 while(!(pbRCC_CR->HSERDY)); //等待外部高速时钟稳定
 pbRCC_CFGR->MCO=0;          //MCO无时钟输出
 pbRCC_CFGR->USBPRE=1;       //USB时钟1.5分频
 pbRCC_CFGR->PLLMUL=9-2;     //PLL倍频设置为9倍(外部时钟8M,PLL输出72M)
 pbRCC_CFGR->PLLXTPRE=0;     //HSE不分频
 pbRCC_CFGR->PLLSRC=1;       //HSE选作做为PLL时钟源输入
 pbRCC_CFGR->ADCPRE=0;       //ADC时钟2分频
 pbRCC_CFGR->PPRE2=1+6;      //APB2设置为1分频
 pbRCC_CFGR->PPRE1=2+6;      //APB1设置为2分频
 pbRCC_CFGR->HPRE=0;         //AHB无分频
 pbRCC_CR->PLLON=1;          //启动PLL
 while(!(pbRCC_CR->PLLRDY)); //等待PLL稳定
 pbRCC_CFGR->SW=2;           //选择PLL输出为时钟源
 //pbRCC_AHBENR->SRAMEN=1;
 //pbRCC_AHBENR->FLITFEN=1;
 
 //IO口第二功能时钟使能
 pbRCC_APB2ENR->AFIOEN=1;
 
 //各通用IO口时钟使能
 pbRCC_APB2ENR->IOPAEN=1;
 pbRCC_APB2ENR->IOPBEN=1;
 pbRCC_APB2ENR->IOPCEN=1;
 pbRCC_APB2ENR->IOPDEN=1;
 pbRCC_APB2ENR->IOPEEN=1;
 
 //ADC时钟使能
 pbRCC_APB2ENR->ADC1EN=1;
 pbRCC_APB2ENR->ADC2EN=1;
 
 //定时器1时钟使能
 pbRCC_APB2ENR->TIM1EN=1;
 
 //SPI1时钟使能
 pbRCC_APB2ENR->SPI1EN=1;
 
 //串口1时钟使能
 pbRCC_APB2ENR->USART1EN=1;
 
 //定时器2、3、4时钟使能
 pbRCC_APB1ENR->TIM2EN=1;
 pbRCC_APB1ENR->TIM3EN=1;
 pbRCC_APB1ENR->TIM4EN=1;
 
 //窗口看门狗时钟不使能
 pbRCC_APB1ENR->WWDGEN=0;
 
 //SPI2时钟使能
 pbRCC_APB1ENR->SPI2EN=1;
 
 //串口2、3时钟使能
 pbRCC_APB1ENR->USART2EN=1;
 pbRCC_APB1ENR->USART3EN=1;
 
 //I2C1、2时钟使能
 pbRCC_APB1ENR->I2C1EN=1;
 pbRCC_APB1ENR->I2C2EN=1;
 
 //USB时钟使能
 pbRCC_APB1ENR->USBEN=1;
 
 //CAN时钟使能
 pbRCC_APB1ENR->CANEN=1;
 
 //备份接口时钟使能
 pbRCC_APB1ENR->BKPEN=1;
 
 //电源接口时钟使能
 pbRCC_APB1ENR->PWREN=1;
 
 //外部低速时钟启动
 pbRCC_BDCR->LSEON=1;
 pbRCC_BDCR->LSEBYP=0;
 pbRCC_BDCR->RTCSEL=1; //选择外部时钟为RTC时钟
}

关键字:STM32F103  复位  时钟控制模块  头文件 引用地址:STM32F103的复位及时钟控制模块头文件

上一篇:STM32F103的简易串口驱动(查询方式)
下一篇:TFT-LCD驱动电路的设计

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

STM32F103标准库开发:外部中断(EXTI)实验
一、外部中断(EXTI)—简介 EXTI (External interrupt/event controller)——外部中断/事件控制器。 互联型STM32有20个能够产生事件/中断请求的边沿检测器,STM32F103系列有19个能够产生事件/中断请求的边沿检测器。 每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。 每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。 二、外部中断(EXTI)—框图 三、外部中断(EXTI)—线路映像 通用I/O端口以下图的方式连接到16个外部中断/事件线上: 四、外部中断(EXTI)—寄存器 从外部中断(
[单片机]
<font color='red'>STM32F103</font>标准库开发:外部中断(EXTI)实验
基于stm32f103zet6的定时器的学习3(定时器产生4路PWM)
定时器TIM3产生四路PWM波输出。 首先介绍一下PWM吧,算是给自己充电,脉冲宽度调制(PWM),是英文“Pulse Width Modulation ”的缩写,简称脉宽调制,是利用 微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。 一、这个程序的主函数相当简单: span style= font-size:10px; /*******由于没有做外设测试的程序是:按键PA0仅一个LED灯******/ /*******由于没有做外设测试的程序是:串口采用的是PA9- (T - T),PA9- (R - R)*****/ #include stm32f10x.h
[单片机]
基于<font color='red'>stm32f103</font>zet6的定时器的学习3(定时器产生4路PWM)
STM32F103低功耗与IO唤醒
stm32f1有三种低功耗模式,有睡眠、停机、待机三种。 测试待机模式时,standby模式。发现不能通过IO口中断唤醒,很费解,找了半天原因后。发现是待机模式下,外部只能通过PA0这一个管脚唤醒,其他的都不行,而且必须是上升沿。 所以要使用这种低功耗模式的话,原理图需要提前搞好,把唤醒的源连接到PA0上,并且如果唤醒信号是下降沿的话,还要加反相器变换成上升沿。否则等PCB板子做出来出来,只能飞线了。 另外,这个唤醒就是真的直接唤醒了,只要中断产生了,就会进中断服务程序,然后单片机整个程序就跑起来了,前提是没有操作系统。
[单片机]
STM32F103的普通定时器中断问题
问题: 存在开机后初始化,在TIM3_Int_Init()里面,一打开允许中断函数TIM_ITConfig(),定时器立刻进入中断函数一次。只进一次。 初始化函数最后已经关闭定时器: TIM_Cmd(TIM3, DISABLE); //暂关闭TIMx外设。将这个函数提到初始化最前面也没用。 解决方法: 总结:应该是TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);产生了更新事件,只要将 TIM_ClearFlag(TIM5, TIM_FLAG_Update); TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE); 放在TIM_TimeBaseInit
[单片机]
STM32f103的数电采集电路的USART的使用与蓝牙的连接的程序
STM32 的串口资源相当丰富的,功能也相当强劲。本项目所使用的 STM32F103C8T6 最多可提供 3 路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、 支持调制解调器操作、 智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA等。 串口设置的一般步骤可以总结为如下几个步骤: 1.串口时钟使能,GPIO 时钟使能 2.串口复位 3.GPIO 端口模式设置 4.串口参数初始化 5.开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤) 6.使能串口 7.编写中断处理函数 HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连
[单片机]
<font color='red'>STM32f103</font>的数电采集电路的USART的使用与蓝牙的连接的程序
使用stm32f103c8实现一个简单的运动会计时器
首先是构思的思维导图 可以看到,我用到了按键结合中断作为输入,使用定时中断来计数,同时显示使用的是oled屏幕,大小为128*64个像素点。 屏幕图片源水印淘宝店( ̄▽ ̄) ok开始第一步,配置管脚图 oled管脚*7,一个3v3,一个GND,还有五个GPIO输出。 这边用的是串行通信的方法,各个管脚功能分别是 CS:OLED 片选信号。 RST(RES):硬复位 OLED。 DC:命令/数据标志(0,读写命令;1,读写数据)。 SCLK:串行时钟线。在 4 线串行模式下,D0 信号线作为串行时钟线 SCLK。 SDIN:串行数据线。在 4 线串行模式下,D1 信号线作为串行数据线 SDIN。 oled管脚: CS~PA0
[单片机]
使用<font color='red'>stm32f103</font>c8实现一个简单的运动会计时器
MSP430单片机系统复位和初始化
简介: 本章我们来学习一下MSP430单片机的系统复位与初始化的过程。 这节课的主要内容有: ·系统复位POR与PUC ·POR产生过程 ·复位后,系统初始状态 ·程序中如何复位 ·硬件中如何设计 1,系统复位 POR与PUC 1.1 MSP430单片机复位逻辑图 可以看到,它在复位时会产生两个信号,一个是POR信号,一个是PUC信号。 POR信号叫做power-on reset。PUC信号叫做power-up clear。翻译成中文就是:POR为上电复位信号,PUC为上电清除信号。这两个信号都可以导致MSP430单片机发生复位中断。但是他们之间的级别是不一样的。 1.2 POR信号来源 POR信号的复位
[单片机]
MSP430单片机系统<font color='red'>复位</font>和初始化
复位及看门狗电路
复位及看门狗电路 WDT接P1.20/TRACESYNC; CRST接reset(57号管脚)(CRST,reset这两个上的低电平有效标志没打出来。); nTRST接P.31(/T/R/S/T);
[单片机]
<font color='red'>复位</font>及看门狗电路
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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