历史上的今天
今天是:2024年09月05日(星期四)
2019年09月05日 | STM32外部中断笔记(一)
2019-09-05 来源:eefocus
关于外部中断
前言:
1:Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此,STM32吧指定中断优先级的寄存器为减少到4位,即AIRCR的高四位,于是对四位进行分组:
组别 分配情况
第0组 0:4 无抢先式优先级,16 个子优先级
第1组 1:3 2 个抢先式优先级,8 个子优先级
第2组 2:2 4 个抢先式优先级,4 个子优先级
第3组 3:1 8 个抢先式优先级,2 个子优先级
第4组 4:0 16 个抢先式优先级,无子优先级
使用函数:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_n); (n=0,1,2,3,4) 即可完成中断分组,那我们该如何使用分组呢?
例如: 现在选择分组3,也就是说此时芯片可以同时处理8个抢占优先级,2个子优先级,即 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =(0,1,2,3,4,5,6,7根据需要任选一个) ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority =0,1(选0或1);
注意:
1:只有抢占优先级可以嵌套,响应优先级不可以嵌套。嵌套的意思为打断,0级抢占优先级可以打断1,2,3,4等抢占优先级;
2:抢占优先级不同时,高优先级的程序首先执行,当抢占优先级相同时,中断按照先来后到执行,若有两个中断同时到来,则按照响应优先级的高低执行,注意,前提是中断同时到来,若响应优先级也相同,则根据对应中断在中断向量表中的排位先后执行。
外部中断配置步骤:
1:开启时钟,配置相应的端口(包括中断源的引脚);GPIO_Init();
2:选取中断源:
例:GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource4);
3:配置EXTI寄存器:
typedef struct
{
uint32_t EXTI_Line;
EXTIMode_TypeDef EXTI_Mode;
EXTITrigger_TypeDef EXTI_Trigger;
FunctionalState EXTI_LineCmd;
} EXTI_InitTypeDef;
4:选取中断分组:(整个过程中只能配置一次)
例:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
5:配置NVIC:
typedef struct
{
uint8_t NVIC_IRQChannel;
uint8_t NVIC_IRQChannelPreemptionPriority;
uint8_t NVIC_IRQChannelSubPriority;
FunctionalState NVIC_IRQChannelCmd;
} NVIC_InitTypeDef;
(以上纯属个人陋见,如有不恰之处,请指点,谢谢!)
上一篇:STM32串口通信(一)
史海拾趣
|
file:///C:/Documents%20and%20Settings/Administrator.4797A7AA28774FE/桌面/未命名.bmp请问这个电路中电感RFC和电容Cbypass值应如何计算,假如放大器的输出频率为5000MHz… 查看全部问答> |
|
如谁有这方面的材料的 请发给我一下可以么?不一定符合下面的要就的,关于多点温度检测系统的都可以发给me,设计一个多点温度检测系统,系统结构框图如下 : 温度测点1→ → 检测器单元1   ...… 查看全部问答> |
|
VXWORKS启动时超级终端会打印以下信息: Copyright 1984-1998 Wind River Systems, Inc. CPU: Motorola ADS - PowerPC 860 VxWorks: 5.4 ...… 查看全部问答> |
|
在嵌入式系统上做Qt串口显示程序 ,make后出现的问题,查了一些资料,有的说是pro里面的HEADERS忘记加就会出现这个问题(具体加什么没说);有的说是出现“undefined reference”表示你缺少*.h 困扰很 ...… 查看全部问答> |
|
我现在写不了某些寄存器(就I2C寄存器写不进去,其他都可以) 有遇见这种问题的么? 我是关了MMU的啊~ 情况如下: 我在shell中输入 查看内存0x55000000位置的寄存器。 d 0x55000000 55000000: 0100 0000 0000 0000 0000 0000 00 ...… 查看全部问答> |
|
求购 S3C4510B 的开发板 最近找了份4510b的资料,看着不错可惜没有板子练。真是郁闷啊!不知道哪为高手还有收藏! 有的话留个言! 电话:13141280460 qq:406672875… 查看全部问答> |
|
在自测试模式下,想实现从邮箱1发数据给邮箱3,但是运行程序发现TRS寄存器不能置位,信息发不出去,不知道怎么回事。 有没有人遇到过类似情况呢? 程序如下 void InitECan(void) { struct ECAN_REGS ECanaShadow; EALLOW; / ...… 查看全部问答> |
|
学习C5416已经很久了,但是进度非常的慢,一个人盲打莽撞。 最近又碰上了个卡了很久的问题: 想用一个串口实现同时输入输出,因为C5416是全双工的。我用5416与TLV2541和TLV5636相接实现信号的输入与输出。 5416一个 ...… 查看全部问答> |
|
The embedded system of the analog design 好书适合数字工程师了解的模拟知识 本书为那些希望掌握基本模拟知识的数字工程师而写,内容包括A/D转换器、D/A转换器、运放、滤波器以及模拟和数字系统集成设计。 本书特别适合那些从事信息家电、工业控制和机电控制系统等模拟/数字 ...… 查看全部问答> |




