- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本科-第3章-STM32最小系统
3.2.2 RCC_Configuration( )函数 1、RCC复位和时钟配置寄存器组 2、枚举类型ErrorStatus 3、RCC_Configuration ( ):(复位和时钟设置)函数 ( Reset and Clock Configuration( ), 复位和时钟设置 函数 ) 1、RCC复位和时钟配置寄存器组 2、枚举类型ErrorStatus STM32单片机的复位和时钟设置 :共包括10个设置寄存器 ①一个32位的时钟控制寄存器(RCC_CR) ②一个32位的时钟配置寄存器(RCC_CFGR) ③一个32位的时钟中断寄存器 (RCC_CIR) ④一个32位的APB2外设复位寄存器 (RCC_APB2RSTR) ⑤一个32位的APB1外设复位寄存器 (RCC_APB1RSTR) ⑥一个32位的AHB外设时钟使能寄存器 (RCC_AHBENR) ⑦一个32位的APB2外设时钟使能寄存器(RCC_APB2ENR) ⑧一个32位的APB1外设时钟使能寄存器(RCC_APB1ENR) ⑨一个32位的备份域控制寄存器 (RCC_BDCR) ⑩一个32位的控制/状态寄存器 (RCC_CSR) Backup domain control register (RCC_BDCR) 详见参考手册 V10_1 第P60 编程时,时钟的具体配置是从RCC(Reset and Clock Configuration,复位和时钟配置)寄存器组开始。在固件库中,用结构体RCC_TypeDef 定义 RCC寄存器组: 在文件“stm32f10x_map.h”中,定义如下: /*------------------------ Real-Time Clock -----------------------------------*/ typedef struct { vu32 CR; vu32 CFGR; vu32 CIR; vu32 APB2RSTR; vu32 APB1RSTR; vu32 AHBENR; vu32 APB2ENR; vu32 APB1ENR; vu32 BDCR; vu32 CSR; } RCC_TypeDef; 1、RCC复位和时钟配置寄存器组 /* Peripheral base address in the bit-band region */ #define PERIPH_BASE ((u32)0 /* Peripheral memory map */ #define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE + 0x1 0000) #define AHBPERIPH_BASE (PERIPH_BASE + 0x2 0000) #define RCC_BASE (AHBPERIPH_BASE + 0x1000) #ifdef _RCC #define RCC ((RCC_TypeDef *) RCC_BASE) #endif /*_RCC */ ? 该宏定义的功能:在程序中,所有写RCC的地方,编译器的预处理程序,都将它替换为:((RCC_TypeDef *) 0 2、枚举类型ErrorStatus 在文件“stm32f10x_type.h”中,包含typedef enum {ERROR=0, SUCCESS=! ERROR} ErrorStatus; 该语句,定义了新枚举类型名ErrorStatus,代表左侧定义的枚举类型。 ? 3、RCC_Configuration(复位和时钟设置)函数:在“HelloRobot.h”中 ErrorStatus HSEStartUpStatus; void RCC_Configuration(void) { /*将外设RCC寄存器组重新设置为默认值,即复位??。 RCC system reset*/ RCC_DeInit(); /*打开外部高速时钟晶振HSE? ,Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /*等待HSE外部高速时钟晶振稳定,或者在超时的情况下退出,Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCC
文档评论(0)