完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一。 STM32F1时钟系统
1. STM32F1时钟系统的简介 时钟系统的总框图如下: 其中有: ▶系统时钟:芯片系统内部的时钟,程序运行的速度由他决定。 系统时钟可来源于HSI,HSE,PLL时钟 ▶5个蓝色方形为STM32F1系列芯片的时钟源(时钟源即时钟的来源, 芯片中所有的时钟,包括系统时钟,外设时钟,全部都是来自这5个时钟源。) ① HSI时钟(High speed Internal) 高速内置时钟,由RC震荡电路产生,可直接用作系统时钟,或分频后用作PLL 输入 ②HSE时钟(High speed external) 高速外部时钟,通过外部的连接,主要通过接晶振来产生,F1系列开发板上接的是8MHZ的晶振 ③PLL时钟 可理解为一个倍频器,可以倍频2~16倍,最后可作用于系统时钟 ④LSE时钟(Low speed external) 低速外部时钟,跟HSE类似,通过外部的连接,主要通过接晶振来产生。不过速度较低,一般用来给RTC时钟供电。(RTC时钟是:实时时钟,用于提供精确的实时时间,主要用来做日期时间的显示) ⑤LSI时钟(Low speed internal) 低速内置时钟,跟HSI类似,是由RC震荡电路产生,主要用于独立看门狗时钟,也可用于RTC时钟 ▶中间橙色的css为时钟监控系统 作用是:当HSE接的外部时钟损坏时,系统时钟可自动切换到HSI时钟 ▶系统时钟右方通过AHB(分频)总线,分频后主要产生APB1和APB2时钟,两者都接了很多外设时钟。 具体的接外设如下图: 因此在使用图中相关设备时,应当使能相应的APB1或APB2;例如使用GPIOA时应该使能APB2中的GPIOA时钟!!! RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能GPIOA 2. 复位和时钟控制(RCC)的相关寄存器 了解RCC的相关寄存器是为了:通过配置RCC的寄存器来控制(一)中各个时钟,使能相关设备的时钟 RCC的相关寄存器有如下几种: 比较常用的是红色部分的寄存器 AHBENR,APB2ENR,APB1ENR用来使能外设时钟的。如:要使用GPIOA,那么就应该配置相应的APB2ENR寄存器来使能相应的GPIOA时钟。 CR寄存器主要用来使能HSI,HSE,CSS,PLL时钟源。因此在使用时钟源之前应该配置CR寄存器 CFGR寄存器主要用来选择相应的时钟源,比如系统时钟可来源于HSI,HSE,PLL时钟;但是具体来自哪个就是通过配置CFGR寄存器选择 3. 固件库里与RCC相关的库函数 其中 “1.时钟使能配置” 是用来使能各种时钟源,是CR寄存器的功能 “4. 外设时钟使能” 是用来使能外设相关的时钟,其实就是AHBENR,ABP1ENR,ABP2ENR寄存器的功能 其中“ 2.时钟源相关配置” 是为系统时钟,PLL时钟等选择时钟源。例如从HSI,HSE,PLL中选择一个作为系统时钟的时钟源; “3. 分频系数选择配置”是选择分频;2和3其实是CFGR寄存器的功能 二。 端口复用和重映射 1. 端口复用 1.1 端口复用的意思 简单的说就是可以将GPIO作为内置外设的功能引脚,内置外设就是芯片之外的外设,比如串口,ADC,DAC等,这些外设的引脚与GPIO一起共用(复用)。 例如把PA9和PA10作为串口的功能引脚来发射和接受的时候,就叫做复用 具体的复用引脚在《数据手册》第20页 1.2 端口复用的配置(以PA9,PA10配置为串口1为例) 首先使能相应的GPIO时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO,ENABLE); //使能GPIOA的时钟 使能串口1的时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能GPIOA的时钟 初始化GPIO口 外设的配置 与 GPIO配置 的关系在《中文参考手册》第110页 如串口配置与GPIO配置的关系: 意思就是如果要把串口的发送配置为全双工模式,那么就得将相应的GPIO配置为推挽复用输出;串口的接收也类似。 之后使用GPIO_Init( )函数来配置GPIO: 2. 端口重映射 2.1 端口重映射的意思 每一个内置外设都有若干个输入输出引脚(例如串口1的发送接收引脚是PA9,PA10),一般这些输入输出引脚都是固定的;而重映射就是可以把某个外设的引脚通过重映射寄存器,“变”到其他引脚。 例如串口1是PA9,PA10,可以通过重映射“变”到PB7,PB8 2.2 部分重映射和完全重映射 ▶部分重映射:内置外设的功能引脚只有部分进行重映射,还保留一部分引脚是原来的默认引脚 ▶完全重映射:内置外设的功能引脚全部进行重映射 2.3 重映射的配置(以串口1为例) 使能相应的GPIO时钟(指重映射后的GPIO) 使能将要使用的内置外设的的时钟(串口1) 使能AFIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,enable);//使能AFIO时钟 在对寄存器AFIO_MAPR,AFIO_EXTICRX和AFIO_EVCR进行读写操作时,应该打开AFIO时钟 ▶AFIO_MAPR:配置重映射功能 ▶AFIO_EXTICRX:配置外部中断线映射(中断实验会用到) ▶AFIO_EVCR:配置EVENTOUT事件输出 开启重映射 GPIO_PinRemapConfig(GPIO_Remap_USART1,enable); //启动串口1的重映射 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1957 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1740 浏览 1 评论
1208 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
799 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1765 浏览 2 评论
2010浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
858浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
302浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
653浏览 3评论
654浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-12 09:32 , Processed in 0.716138 second(s), Total 43, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191