STM32各时钟的介绍,中断

一、时钟系统

1)HSE时钟

高速外部时钟是由外部时钟源提供,目前几乎所有的STM32单片机的设计都是在外部接一个8MHZ的晶振 ,经过PLL倍频(9倍频)后得到一个72MHZ的系统时钟。我们系统默认就是这个时钟。这个在启动文件可以看到。

2)HSI时钟

HSI时钟信号有内部8Mhz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器段。然而,即使在校准之后它的时钟频率精度仍较差。

3)PLL时钟

内部PLL用来倍频HSI RC 的输出时钟或HSE晶体输出时钟。PLL的设置必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。如果PLL中断在时钟中断寄存器里被运行,当PLL准备就绪时,可产生中断请求。

PLL时钟一般都是对外部的8MHz的时钟信号经过9倍频后,得到72MHZ的时钟频率,这是STM32F1系列允许的最高时钟频率。

4)LSE时钟

LSE晶体是一个32.768kHZ的低速外部晶体或陶瓷谐振器。它为实时时钟*RTC或者其他定时功能提供一个低功耗且精确的时钟源。

LSE是不能驱动系统时钟的。

5)LSI时钟

LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保存运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40Khz(在30khz~60khz之间)

LSI也是不能驱动系统时钟的

二、STM32的中断系统

2.1 中断的概念

在主程序运行过程中,出现了特定事件,使得CPUY暂停当前正在运行的程序,转而去处理这个事件,等这个事件处理完成之后,CPU再回到刚才被打断的位置继续处理,这就是中断。

那个打断CPU执行的特定事件,我们一般称之为中断源。被中断源打断的位置我们称之为断点。处理特定事件的过程,我们称之为执行中断处理程序。正在执行中断程序的时候,这个时候有可能被另外一个中断源给中断,CPU转而去执行另外一个中断源的中断处理程序,这叫中断嵌套。

中断B能否打断中断A,要看他们的优先级,优先级高的可以打断优先级低的,

中断源可以是外部的,也可以是内部的。外部的叫做外部中断源,内部的叫内部中断源(内部的中断有时候也叫异常)

2.2 为什么需要中断

对单片机系统来说,中断至关重要。

比如我们要检测按键是否按下,如果没有中断,则需要循环的方式不断的去检测按键对应的IO口的电平,这是比较耗费CPU的时间的,

2.3 STM32的中断

Cortex-M3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。

一般情况下芯片厂商会对Cortex-M3de中断继续裁剪。

STM32 有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级

STM32F103系列70个中断(咱们目前使用的芯片)有10个内核中断和60个可编程的外部中断

中断异常向量表

2.4 STM32的中断体系架构

所有中断都要交给内核Cortex-M3

3种中断来源:

1.内核其他控件(系统滴答定时器,复位,内部中断)

2,片上外设(串口,定时器I2C)

3。外部中断。(AFIO引脚复用选择器),7个引脚同时只能选一个

2.5 NVIC嵌套向量中断控制器

1)NVIC的介绍

NVIC(嵌套向量中断控制器)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理中断。嵌套 向量中断控制器管理着包括内核异常,外部中断等所有中断。由NVIC决定哪个中断的处理程序交给CPU来执行。

每一个外部中断都可以被使能或者静止,并且可以被设置为挂起状态或者清除状态。处理器的中断可以是电平形式的,也可以是脉冲形式的,这个中断控制器就可以处理任何中断源。

16个IO的中断与PVD(电源电压检测),RTC(实时时钟),USB,以太网检测这20个外部中断会通过会通过EXTI来控制,然后交给NVIC。其他中断都是直接交给NVIC来处理。

2)中断优先级

NVIC为了方便管理中断,可以通过软件给每个中断设置优先级。NVIC用4个位来控制优先级,值小的优先级高。把优先级分为2种:抢占优先级和响应优先级。

规则:

1、优先级值越小,优先级越高

/2、 如果不设置优先级,则默认优先级为0.

/3、 先比较抢占优先级。抢占优先级高的可以打断抢占优先级低的。

/4、若抢占优先级一样。再比较响应优先级。但是响应优先级不会导致中断嵌套。

5、若抢占优先级一样的同时挂起,则优先处理响应抢占优先级高的。

6、若挂起的优先级(抢占和响应)都一样,则查找中断向量表,值小的先响应

NVIC对优先级分了5组,在程序中先对中断进行分组,而且分组只能分一次,

相关推荐
偶像你挑的噻6 小时前
15-Linux驱动开发-PWM子系统
linux·驱动开发·stm32·嵌入式硬件
硅农深芯6 小时前
是时候跟GitBucket说再见了
git·单片机
未来之窗软件服务6 小时前
幽冥大陆(三十八)P50酒店门锁SDK C#仙盟插件——东方仙盟筑基期
开发语言·单片机·c#·东方仙盟·东方仙盟sdk·东方仙盟vos智能浏览器
Java小白,一起学习9 小时前
STM32新建工程(标准库官网下载)
stm32·单片机·嵌入式硬件
vickycheung39 小时前
RK3588增加Xenomai3实时补丁
经验分享·嵌入式硬件·arm 嵌入式开发
Bona Sun11 小时前
单片机手搓掌上游戏机(十五)—pico运行fc模拟器之编译环境
c语言·c++·单片机·游戏机
贝塔实验室11 小时前
红外编解码彻底解析
网络·嵌入式硬件·信息与通信·信号处理·代码规范·基带工程·精益工程
小尧嵌入式11 小时前
C++基础语法总结
开发语言·c++·stm32·单片机·嵌入式硬件·算法
2401_8534482312 小时前
STM32F103C8T6---OLED显示屏
stm32·单片机·oled
沐欣工作室_lvyiyi12 小时前
基于单片机的居家智能音箱系统(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·智能音箱