历史上的今天
今天是:2024年12月03日(星期二)
2018年12月03日 | STM32之中断管理
2018-12-03 来源:eefocus
关于STM32的中断,相信大家玩过单片机的朋友就知道,中断是MCU的一大优点,使MUC工作能够分清事情的”轻重缓急“ ,从而达到处理事情井井有条;
今天就讲解下STM32-Cortex-M3内核的中断管理机制,其他处理器的也类似;M3中F103系列的有60个可屏蔽的中断和16个内核级别的中断;
大家知道,操作一款MCU 其实实质就是操作的寄存器,而寄存器有机的结合起来就实现了特定的功能;中断系统也不例外,下面来认识一下中断系统中的几个重要的寄存器;
1. ISER[8](Interrupt Set-Enable Registers),就是中断使能寄存器组,这个数组有8个成员,每个成员是32位的寄存器;写1有效,写0无效;
2. ICER[8](Interrupt Clear-Enable Registers),就是中断清除使能寄存器组,这个数组有8个成员,每个成员是32位的寄存器;写1清除对应ISER寄存器上的寄存器位,写0无效;
3. ISPR[8]:inerrupt Set-Pending Registers ,即中断挂起寄存器;写1有效,即可将正在执行的中断挂起,而去执行另外的高优先级别或者是同级别的中断,写0则无效;
4. ICPR[8]:interrupt Clear-Pending Registers ,即中断清除挂起寄存器;写1有效,即可将正在执行的中断解挂起者,写0则无效;
5.IABR[8]:Interrupt Active Bit Registers,中断激活标志位;标志位为1时,则对应该中断正在执行;
6.IP[240]:Interrupt Priority Registers,中断优先级控制寄存器组,具有240个8bit的寄存器,每个寄存器对应着8个bits,而f103是M3内核,只用了前面60个寄存器;只用高4位【7:4】有效;
7.SCB->AIRCR 寄存器,是一个设置中断优先级分组的寄存器,只10:8位 有效; 111 --对应 iP寄存器中0:4 ,即0位抢占位,4时响应优先级;
总而已之,要使用中断,必须先设置中断优先级分组,NVIC_PrioityGroupConfig();
再设置 NVIC_Init();
上一篇:STM32中断源位置
下一篇:stm32时钟相关
史海拾趣
|
混频器常常用一个二极管桥式电路(diodebridge)或一个Gilbert单元(Gilbertcell)来实现。这两类混频器都使用了一个本地振荡器(LO)来跳转射频输入的极性。 当LO为正时,RF输入被混频转换为中频(IF)输出时极性不改变。当LO为负时,RF输入转换为IF时极 ...… 查看全部问答> |
|
Windows Embedded CE 6.0帮助文档中介绍,Establishing a Modem Connection的流程如下: lineInitializeEx ↓ lineOpen ↓ lineMakeCall ↓ lineGetMessage & ...… 查看全部问答> |
|
用windows ce 的template建了个pda的os project 想在这个project下面加一个 subproject 来播放一个 test16bit.wav的文件 这个文件 我是从project property的custom build actions里面加入目录relase的 这个subproject我是这么写的 #include # ...… 查看全部问答> |
|
本人目前维护一个虚拟网卡的微端口驱动程序,代码已经由别人完成,且已经商品化,公司要求我增加一项功能,功能是驱动能够动态的修改虚拟网卡的mac地址。 虚拟网卡mac地址的初始化是通过读一个TXT文件,然 ...… 查看全部问答> |
|
LPCXpresso-CN在IAR下怎么开发,选什么仿真器啊 驱动应该装好了,用lpcxpresso IDE开发无能 板子后面写了IAR,应该可以用IAR来开发 导入了一个IAR里自带的LPC1114的例程 编绎有一警告,无错误 仿真器选择那个呢,我一个个试好像都不行啊, 是不是有其他的选项要设置… 查看全部问答> |
|
(1)开关结点初始化 这时选择的节点类型是终端节点,所以使用f8wEndev.cfg文件,所以在Zglobals.h文件中,我们可以得到下面的定义#define ZG_DEVICETYPE_ENDDEVICE 0x02#define DEVICE_LO ...… 查看全部问答> |




