没有合适的资源?快使用搜索试试~ 我知道了~
STM32学习笔记——RCC系统时钟配置
5星 · 超过95%的资源 需积分: 50 41 下载量 124 浏览量
2012-11-12
19:53:43
上传
评论 2
收藏 60KB DOC 举报
温馨提示
试读
14页
自己写的STM32的学习笔记,详细介绍了RCC系统时钟的配置方法,内有程序代码,可以正常行,注释详细。
资源推荐
资源详情
资源评论
STM32 学习笔记——RCC 系统时钟配置
/*
Created on: 2012-10-28
Author: zhang bin
学习笔记
for STM32F103C8
redesigned by zhang bin
2012-10-28
versions:V-0.1
All Rights Reserved
*/
/**************************************************************************
*
* RCC 配置实验
*
* 实验目的: 了解熟悉 RCC 配置细节,系统运行不同的频率 RCC 配置不一样 RCC 用于配
置系统运行频率
*
* 接线方式: 参考接线演示图片
*
* 实验现象: 通过改变宏定义不同频率 LED 交替闪烁的速度不一样,体现 CPU 运行速度
快慢
* 改变频率: #define SYSCLK_FREQ_20MHz //20MHZ
#define SYSCLK_FREQ_36MHz //36MH 工作
#define SYSCLK_FREQ_48MHz //48MH 工作 通过宏定义改变系统时钟频率
#define SYSCLK_FREQ_72MHz //72MH
*******************************************************************************
/
//学习 RCC 的配置方法,以后可以直接用
#include "stm32f10x_lib.h"
/******************************** 宏定义 ------------------------------------*/
//#define SYSCLK_HSE
//#define SYSCLK_FREQ_20MHz
//#define SYSCLK_FREQ_36MHz //36MH 工作
//#define SYSCLK_FREQ_48MHz //48MH 工作 通过宏定义改变系统时钟频率
#define SYSCLK_FREQ_72MHz //工作 72MH
#define DELAY_COUNT 0xFFFFF
/******************************** 变量定义 ------------------------------------*/
GPIO_InitTypeDef GPIO_InitStructure; //定义 GPIO 配置的结构体变量,用于初始化设置
GPIO
RCC_ClocksTypeDef RCC_ClockFreq; //定义 RCC 时钟频率配置的结构体变量,用于配
置 RCC。包括 SYSCLK,HCLK,PCLK1,PCLK2,ADCCLK 频率的设置
ErrorStatus HSEStartUpStatus; //定义枚举类型的错误变量
/*********************************声明函数 -----------------------------------------------*/
//设置系统时钟 SYSCLK 的函数
void SetSysClock(void);
void SetSysClockToHSE(void);
void SetSysClockTo20(void);
void SetSysClockTo36(void);
void SetSysClockTo48(void);
void SetSysClockTo72(void);
void NVIC_Configuration(void); //配置嵌套向量中断控制器函数
void Delay(vu32 nCount); //延迟
/
*******************************************************************************
*
* 主函数
*
*******************************************************************************
/
int main(void)
{
#ifdef DEBUG
debug();
#endif
SetSysClock(); //设置系统时钟 HCLK PCLK2 PCLK1
/* This function fills the RCC_ClockFreq structure with the current
frequencies of different on chip clocks (for debug purpose) */
RCC_GetClocksFreq(&RCC_ClockFreq); //获得不同片上时钟的频率,RCC_ClockFreq 为
前面定义的时钟频率结构体变量,该函数把当前
//不同片上时钟的频率存放在结构体 RCC_ClockFreq 中
/* Enable Clock Security System(CSS): this will generate an NMI exception
when HSE clock fails */
RCC_ClockSecuritySystemCmd(ENABLE); //该函数使能或失能时钟安全系统 在这里是
使能
/* NVIC configuration ------------------------------------------------------*/
NVIC_Configuration();
//开启 GPIOA 和 GPIOB 模块时钟 使能 APB2 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA,
ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; //
选择 6,7,8,9 引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO 速度为 50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出模式
GPIO_Init(GPIOB, &GPIO_InitStructure); //用刚刚配置好的结构体变量初始化 PB 口
GPIO_Write(GPIOB, GPIO_Pin_7 | GPIO_Pin_9); //向 GPIOB 口写入数据
//MCO:微控制器时钟输出 时钟能够输出到外部的MCO管脚,相关的 GPIO 管脚必须
被配置成备用功能模式 即 AF 模式
/* Output HSE clock on MCO pin */ //在 STM32F103C8 中 PA8 为 MCO 管脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //选择第 8 脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出模式
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 PA 口
//在 STM32F103C8 中 PA8 为 MCO 管脚
RCC_MCOConfig(RCC_MCO_HSE); //选择在 MCO 管脚上输出的时钟源 参数设置指定输
出的时钟源,可取值如下:
//RCC_MCO_NoClock : 无 时 钟 被 选 中 , RCC_MCO_SYSCLK : 选 中 系 统 时 钟 ,
RCC_MCO_HSI:选中 HSI,RCC_MCO_HSE:选中 HSE,RCC_MCO_PLLCLK_Div2:
//选中PLL时钟除以2
//警告:当选中系统时钟作为 MCO 管脚的输出时,注意它的时钟频率不超过 50MHz(最大
I/O 速率)。
/* Toggle leds connected to GPIO_LED Pin 6, Pin 7, Pin 8 and Pin 9 pins */
while (1)
{
GPIO_Write(GPIOB, (u16)~GPIO_ReadOutputData(GPIOB)); //PB 口的状态取反
/* Insert a delay */
Delay(DELAY_COUNT);
}
剩余13页未读,继续阅读
资源评论
- sddxzyw2013-02-04讲得挺好哦的,挺细致的。
- lyj158071436522013-05-17幸亏有了这个程序!
- lsily90972014-09-25对初学者来说十分有用,讲的比较细致。
- dj_highman2013-03-15讲的挺详细,很好的学习了STM32时钟
zhangbindt
- 粉丝: 1
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于C++的程序设计大赛天梯赛L2答案(天梯赛)
- 基于python实现的三次样条插值和均值插值法实现
- Python语言教程2-python批量图片大小处理-多文件夹
- Python语言教程1-python批量图片重命名,将后缀某几个不想要的字去除
- Space Combat Kit 太空战斗套件Unity游戏开发插件资源unitypackage C#
- Universal Device Preview 通用设备预览Unity游戏开发插件资源unitypackage
- Paladin Anim Set 圣骑士动画集Unity游戏动作动画插件资源unitypackage
- 计算机财务管理期末考报表部分题目及答案.doc
- 计算机软件维护论文.doc
- 计算机软件著作权授权书.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功