完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
简介
STM32拥有一个强大的中断系统,几乎所有外设都能产生中断,对于F103系列的单片机,ARM公司在Cortex‐M3 的内核水平上搭载了一个异常响应系统(异常就是中断), 支持为数众多的系统异常和外部中断。对于每一种中断都有一个编号,其中,编号为 1-15 的对应系统异常,大于等于 16 的则全是外部中断 Cortex-M3系统异常清单: Cortex-M3外部中断清单: Cortex-M3提供了两百多种异常类型,但在STM32中并没有这么多,STM32的中断系统是被阉割裁剪过的,只有六十多个,但相比于51单片机也已经是十分强大了 NVIC嵌套向量中断控制器 NVIC嵌套向量中断控制器,控制着整个芯片中断相关的功能,相当于中断系统的大脑,是内核里面的一个外设,但由于ST官方在设计芯片的时候对Cortex-M3的中断系统进行了裁剪,把不需要用到的部分给去掉。 NVIC的寄存器 寄存器的结构体定义位于core_cm3.h中 typedef struct { __IO uint32_t ISER[8]; /*!< Offset: 0x000 Interrupt Set Enable Register */ uint32_t RESERVED0[24]; __IO uint32_t ICER[8]; /*!< Offset: 0x080 Interrupt Clear Enable Register */ uint32_t RSERVED1[24]; __IO uint32_t ISPR[8]; /*!< Offset: 0x100 Interrupt Set Pending Register */ uint32_t RESERVED2[24]; __IO uint32_t ICPR[8]; /*!< Offset: 0x180 Interrupt Clear Pending Register */ uint32_t RESERVED3[24]; __IO uint32_t IABR[8]; /*!< Offset: 0x200 Interrupt Active bit Register */ uint32_t RESERVED4[56]; __IO uint8_t IP[240]; /*!< Offset: 0x300 Interrupt Priority Register (8Bit wide) */ uint32_t RESERVED5[644]; __O uint32_t STIR; /*!< Offset: 0xE00 Software Trigger Interrupt Register */ } NVIC_Type; 其中 ISER是中断使能寄存器,ICER是中断清除寄存器,IP是八位8bit中断优先级寄存器,我们在配置中断的时候一般只会用到这三个寄存器。 中断优先级 前面的寄存器中有出现IP八位中断优先级寄存器,但在STM32中实际只用了4个bit用于优先级的设置 用于表达的优先级还分为
由于优先级中有抢占优先级和子优先级之分,因此需要对这四个位进行分组,分出对应的bit用于两种优先级的表达 控制优先级分组的是内核外设SCB中的AIRCR寄存器,有五种分配选择 中断的初始化编程 中断初始化函数为:void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); NVIC_InitTypeDef初始化结构体: typedef struct { uint8_t NVIC_IRQChannel; // 中断源 uint8_t NVIC_IRQChannelPreemptionPriority; // 抢占优先级 uint8_t NVIC_IRQChannelSubPriority; // 子优先级 FunctionalState NVIC_IRQChannelCmd; // 中断使能或者失能 } NVIC_InitTypeDef; 这里边就已经说明了中断编程的一些要点,由于STM32几乎每一个外设都能产生中断,因此使用哪一个外设的中断的时候
|
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
2700 浏览 0 评论
3347 浏览 9 评论
3025 浏览 16 评论
3519 浏览 1 评论
9127 浏览 16 评论
1254浏览 3评论
642浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
633浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2380浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1944浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-31 20:06 , Processed in 0.998700 second(s), Total 46, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号