一:系统(SYSCLK)时钟3种 (注:时钟频率较高)
HSI振荡器时钟 8MHZ
HSE振荡器时钟 4-16MHZ
PLL 时钟 2-16倍频 PLL的设置必须在其激活前完成,激活后不能改变其状态。
1:HSI为内部8MHz RC振荡产生,启动时间比HSE短,精度较低。出厂校准精度为1%(25℃)。校准值存放在HSICAL[7:0]。
软件判断HIS是否启动完成:通过判断HSIRDY位是否为1。启动时,等HIS稳定后,硬件置位HSIRDY。可以产生中断,如果中断使能(RCC_CIR)。
时钟切换:HSI在复位后为默认系统时钟,若改变时钟源,需等到目标时钟源准备就绪,才能够发送切换。准备就绪的标准是:RCC_CR寄存器里的状态位。
2:HSE时钟
产生方式两种:
à外部时钟源(HSE旁路):最大至25MHz
à外部晶体/陶瓷谐振器(HSE晶体):4-16MHz 负载电容需根据晶振调试
硬件配置:
软件判断HSE是否稳定:HSERDY=1,则HSE稳定。启动时,得等到HSE稳定时,硬件置位HSERDY。可以产生中断,如果中断使能(RCC_CIR)。
3:PLL为倍频HSI RC及HSE时钟。
SYSCLK外设应用
SYSCLK时钟 àI2S2/I2S3
àAPB预分频器(1-512)
à USB时钟48MHZàUSBCLK
à SDIO, FSMCCLK
à (HCLK最大72M)AHB总线,核心存储器,DMA
à APB1预分频器(1-16)最大时钟36MHZà PCLK1
à APB2预分频器(1-16)最大时钟72MHZ àPCLK2
à HCLK/2àSDIO的AHB接口
PCLK1给APB1外设使用
(DAC,,PWR,BKP,CAN,USB,I2C(1-2),USART(2-5),SPI(2-3),WWDG,TIM2-7)
PCLK2给APB2外设使用
(ADC(1-3),,USART1,TIM(1,8),SPI1,IOP(A-G),AFIO)
二:低速时钟LSE/LSI应用于RTC及IWDG
同理LSE 分为 àLSE旁路
àLSE外部晶体/时钟
LSE稳定软件判断:LSERDY为1,启动时,等待时钟稳定,当时钟稳定后,硬件置1。可以产生中断。
应用:RTC
LSE OSC 32.768KHZ à RTC
LSI为内部RC振荡,等待LSIRDY为1,若稳定,硬件置1,可以产生中断。
应用:独立看门狗IWDOG及RTC
LSI RC 40KHZ(30-60KHZ) à RTC 及 IWDG
三:时钟安全系统:CSS
作用是检测HSE是否出现故障,若出现故障,HSE自动关闭,立即产生中断NMI,直到CSS位中断挂起位(RCC_CIR)被清除。
关键字:STM STM32F10X 时钟
引用地址:
STM学习笔记--STM32F10X时钟
推荐阅读最新更新时间:2024-03-16 15:08
程序结构理解(2) 以stm32为例
stm32启动流程分析 这个是一个汇编与c语言结合的流程 stm32入口为 startup_stm32f10x_hd.s (即第一个执行的文件) 在这个文件中首先定义定义CSTACK数据段和.intvec代码段还有全局函数和全局变量 然后就是向量表 在然后就是向量表中的定义了各个函数。 同时复位函数作为程序运行的第一个函数 里面设置了时钟和main入口等 就这样进入了main 然后就调用了各个外设资源 流程大致总结如下 大概意思就这样吧
[单片机]
STM32在调试过程中常见问题和解决办法
STM32微控制器系列--常见问题 St意法半导体http://www.y-ec.com (1) 已经发表的有关STM32的技术资料有哪些? (2) STM32的数据手册和技术参考手册有什么分别? (3) STM32有几种封装形式?是否符合RoHS的要求? (4) 有哪些开发工具可以用于STM32的开发? (5) 是否有简易的方法下载程序代码到STM32的内部Flash? (6) 哪里有STM32上各种外设的使用例程和编程资料? STM32微控制器系列--常见问题解答 (1) 已经发表的有关STM32的技术资料有哪些? 已经发表的有关STM32的技术资料有以下一些: STM32F103xx增强型系
[单片机]
STM32基础9--串口通信(UART)
UART传输方式 UART(Universal Asynchronous Receiver Transmitter),异步串口没有时钟信号,也没有硬件控制流信号。只有Tx(串行输出信号)与Rx(串行输入信号)。 在STM32F407中,串口数据传输有两种方式:阻塞与非阻塞。 1)阻塞:轮询的方式,就是发送缓冲器的数据,直到数据传输完成或者超时后,函数才返回; 2)非阻塞:启动发送缓冲区数据后,立即返回,传输完成后可以触发中断。 注:在51单片机中的UART通方式类似,也是通常使用阻塞发送数据, 而非阻塞通常用来接收数据。 PC端与STM32进行串口通讯 在当前的PC(个人电脑),基本上已将不支持串口了。因此需
[单片机]
IAR建立stm32工程
版本1: stm32是一个当下非常流行的微控制器,很多人都加入了学习stm32的行列中,常用的stm32编译器有IAR和mdk两种,接下来是利用stm32固件库3.5在IAR下的建立的工程模板历程: 1、在常用的文件夹下新建立一个文件夹,根据个人喜好,分别建立如下几个文件夹,用于分别存放固件库中的文件和用户自己的文件 2、将固件库E:STM32stm32固件库3.5STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupiar目录下的汇编文件复制到刚刚建好的模板目录下F:STM32-IARdemoCMSISStartup
[单片机]
STM32F107定时器4用作外部计数器的配置方法
不用配置引脚为输入模式,TIM_TIxExternalCLK1Source_TI2为PB7引脚 void TIM4_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); TIM_TimeBaseStructure.TIM_Period = 0xffff; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0;
[单片机]
stm32,ov7670识别二值化并识别黑色物体,串口返回坐标值
自己网上找的代码,根据要求修改可二值化,识别黑色物体,用红色框框框起来,串口返回坐标值 单片机源程序如下: #include led.h #include delay.h #include key.h #include sys.h #include lcd.h #include usart.h #include string.h #include ov7670.h #include tpad.h #include timer.h #include exti.h #include usmart.h #include EasyTracered.h const u8*LMODE_TBL ={
[单片机]
基于STM32的Doxygen使用简明手册
为了能使代码能够被Doxygen识别,必须遵循Doxygen的书写规则。注释必须以/打头,以*/结束。 一、添加类型 1、 添加首页(mainpage): 格式: / \mainpage RIOM DSP Software Library * * b Introduction /b * * This user manual describes the CMSIS DSP software library */ 关键字: \mainpage 描述: 用以显示在首页中,一般用于对整个工程进行描述。 2、 添加define分组(defgroup): 格式: / @defgroup ZHM2
[单片机]
基于STM32模拟UART串口通信
UART工作原理 UART即通用异步收发器,是一种串行通信方式。数据在传输过程中是通过一位一位地进行传输来实现通信的,串行通信方式具有传输线少,成本底等优点,缺点是速度慢。串行通信分为两种类型:同步通信方式和异步通信方式。 但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样有利于增加发送与接收的灵活性。异步通信是一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。 每一个字符的传输靠起始位来同步,字符的前面一位是起始位,用下降沿通知收方开始传输,紧接着起始位之后的是数据位,传输时低位在前高位在后,字符本身由5~8位数据位组成。 数据位后面是奇偶校验位,
[单片机]