目录
一.
1. STM32
嵌套向量中断控制器(
NVIC
)具有(A )个可编程的优先等级。
A. 16
B.43
C.72
D.30
2.STM32F103
有(C )可屏蔽中断通道。
A. 40
B.50
C.60
D.70
3.STM32F103
采用(A )位来编辑中断优先级。
A. 4
B.8
C.16
D.32
4.cortex-m3
支持(D )个中断。
A. 16
B.32
C.128
D.256
5. cortex-m3
中断包含了(B
)个内核中断。
A. 8
B.16
C.32
D.64
6. cortex-m3
中断包含了(D )个外部中断。
A. 120
B.200
C.240
D.250
7.
关于中断嵌套说法正确的是(D )。
A.
只要响应优先级不一样就发生中断嵌套
B.
只要抢占优先级不一样就发生中断嵌套
C.
只有抢占优先级和响应优先级都不一样才能发生中断嵌套
D.
以上说法都不对
8.
在
STM32
向量中断控制器管理下,可将中断分为(C )组。
A. 2
B.3
C.4
D.5
9.SysTick
的中断号是(C )。
A. 4
B.5
C.6
D.7
10. STM32
的外部中断
/
事件控制器(
EXTI
)支持(A )个中断事件请求。
A. 16
B.19
C.36
D.43
二、填空题
1. STM32F103
微控制器复位中断服务程序的地址存放在中断向量表中的 第0个 位置。
2.
若要使用
STM32F103
微控制器的
EXTI
中断,必先使 能 AFIO 时钟以及 GPIO
时钟。
3.STM32
的 NVIC(嵌套向量中断控制器) 管理着包括
Cortex-M3
核异常等中断。
4. Cortex-M3
的系统异常清单中,编号为
1~15
的对应
内核异常
,编号
15
以上的为 外部中断 。
5.
原则上,
Cortex-M3
支持
4
个固定的高优先级和最多可达 16 级的可编程优先级。
6.STM32
设置中断的抢占优先级和响应优先级均为
4 级(0~3
),现有中断
A
,抢占优先级为
1
,响应优先级 为 0
;中断
B
,抢占优先级为
0
,响应优先级为
2
;中断
C
,抢占优先级为
1
,响应优先级为
1
,这三个中断 的优先级排序应为 B>A>C 。
7.
函数
EXTI_GetITStatus()
的功能是
检查外部中断线的中断标志位是否被置位。
三、简答题
1.
对于不同的中断源,
STM32F103
微控制器的响应顺序遵循什么规则?
响应优先级:中断源的优先级决定了中断的相对顺序。优先级高的中断源将优先得到处理。
抢占优先级:在相同响应优先级的情况下,抢占优先级较高的中断源将抢占正在执行的低优先级中断 的处理。
中断嵌套:如果一个中断正在处理过程中,而另一个中断源的响应优先级高于正在处理的中断,且具 有较高的抢占优先级,那么新的中断可以打断正在处理的中断,执行更高优先级的中断处理。
2.
STM32F103
微控制器
EXTI
信号线一共有多少根?它们分别对应哪些输入?
共有23
根,
EXTI0
到
EXTI15
为
gpio
外部中断
0~15
,
• EXTI16
:对应
PVD
(电源电压检测)中断
• EXTI17:对应
RTC
闹钟中断
• EXTI18
:对应
USB
唤醒中断、
EXTI19
:对应以太网唤醒中断
• EXTI20
:保留、
EXTI21
:保留、
EXTI22
:对应
SD
卡中断
四、程序设计题
1.
调用库函数实现配置
STM32
单片机的优先级分组为:
2
位用于抢占优先级,
2
位用于响应优先级,并设置 中断通道 2
的抢占优先级为
2
,响应优先级为
2
。
//配置
NVICNVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//先占优先级 2 位,从优先级2位
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChanne1Cmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_Init(&NVIC_InitStructure);
2.
调用库函数实现配置输入线
3
生成上升沿触发的输入中断。
//配置外部中断线为上升沿触发
EXTI_InitStructure.EXTI_Line = EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI LineCmd = ENABLE;
EXTI_Init(&EXTI InitStructure);
3.
电路如图所示,通过中断方式实现按键对
LED 灯状态的控制,完成主程序文件(包含主函数和中断函数)。(假设灯和按键中断已设置,函数分别为 LED_GPIO_Init()
和
INIT_Init()
)。
void EXTI4_IRQHandler(void)
{
if (EXTI GetITStatus (EXTI Line4) == SET)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_1,!GPIO_ReadOutputDataBit(GPIOA,CPIO_Pin_1);
EXTI_ClearITPendingBit(EXTI_Line4):
}
}
int main(void)
{
LED_GPIO_Init();
INIT_Init();
while (1);
{
EXTI4_IRQHandler();
}
}