[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] (7)

更新时间:2023-06-24 19:00:27 阅读: 评论:0

《嵌入式系统设计(基于STM32F429)》
第7章课后题参考答案
1.外部中断的中断请求信号可以控制器外部产生由GPIO引脚引入的,也可以是由控制器内部一些片上外设产生的。这一说法正确?___正确_____。
2.每个GPIO引脚都可以作为外部中断信号输入引脚,GPIO引脚编号相同的映射到同一个EXTI线,那么GPIOA的0号引脚映射EXTI学做美甲线___0_____,GPIOD的0号引脚映射cutsceneEXTI线_____0___,GPIOC的5我的音乐英文怎么写号引脚映射EXTI线_____5___,GPIOG的10号引脚映射EXTI线____10____。
3.外部中断信号输入的触发信号形式可以是__上升沿触发_、_下降沿触发_、_边沿触发_、。
4.每个外部中断在中断向量表中,是否都独立占用一个位置?__不是__
5.外部中断___5~9_____共用一个中断向量和外部中断__10~15__共用一个中断向量。
6.外部中断的中断0在库函数启动文件中定义的默认中断函数名是__EXTI0_IRQHandlerdrumkit__
7.函数SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0)有什么功能?
答:
连接GPIOA的0号引脚 到 EXTI0
8.函数void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)有什么功能
答:
初始化外部中断功能。
9.应用外部中断,需要先使能GPIO端口的时钟和___ SYSCFG___时钟。
10.试述初始化外部中断的步骤
答:
(1)使能用到GPIO时钟和SYSCFG时钟sigma aldrich
(2)初始化相应GPIO的引脚为输入
(3)设置GPIO引脚与EXTI线的映射关系
(4)初始化工作类型、设置触发条件、使能等等
(5)配置中断分组(NVIC),并初始化相应中断通的优先级及使能/禁止
(6)编写中断服务函数
(7)编写中断服务程序处理内容。
11.初始化外部中断1:将GPIOA的1号引脚作为输入引脚,中断模,上升沿触发中断优先级3组,抢占优先级为3,响应优先级为1,使能中断
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA ,ENABLE); 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;               
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1);
EXTI_InitStructure.EXTI_Line = EXTI_Line1;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; 
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
 
  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
12.外部中断被挂起后,不能硬件清除,需要在相应的中断服务程序将挂起标志清除,使用的函数是__void EXTI_ClearITPendingBit(uint32_t EXTI_Line)______。
13.请说明中断服务程序的响应过程及中断服务程序的函数名怎么更改。
答:
1)处理器在当前堆栈上把程序状态寄存器程序计数寄存器链接寄存器、R12、R3R0八个寄存器自动依次入栈。
2)读取向量表(如果是复位中断,更新堆栈指针的值)
3)根据向量表更新程序计数寄存器的
线上授课平台(4)加载新程序计数寄存器处的指令(步骤(2)~步骤(4)步骤(1)同时进行)
5)更新链接寄存器为EXC_RETURN(EXC_RETURN表示退出异常后返回的模式及使用的堆栈)。
中断服务程序的函数名更改:
1)直接在启动文件中修改 中断服务程序的函数
(2)在C文件中使用宏定义方法实现
例如:
#define  KEY_IRQHandler  EXTI0_IRQHandler
14.根据图7-4,编写程序以完成外部中断初始化,中断输入引脚为PE5,上升沿检测方式。
图7-4 题14电路图
答:
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/
/-------------------第1步--------------------
/*开启按键GPIO口的时钟*/
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO ,ENABLE); 
/* 使能 SYSCFG 时钟 ,使用GPIO外部中断时必须使能SYSCFG时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
//-------------------第2步--------------------
/* 选择按键的引脚 */ powers
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
/* 设置引脚为输入模式 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;               
/* 设置引脚不上拉也不下拉 */
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/* 使用上面的结构体初始化按键 */
GPIO_Init(GPIOE, &GPIO_InitStructure);
//-------------------第3步--------------------
/* 连接 EXTI 中断源 到GPIOE 5引脚 */
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource5);
//-------------------第4步--------------------
/* 选择 EXTI 中断源 */
EXTI_InitStructure.EXTI_Line = EXTI_Line5;
/* 中断模式 */
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
/* 上降沿触发 */
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; 
/* 使能中断/事件线 */
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
all round//-------------------第5步--------------------
/* 配置 NVIC */
/* 配置NVIC为优先级组1,整个程序处于同一组 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
/* 配置中断源:按键1 */
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
/* 配置抢占优先级:1 */
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
/* 配置子优先级:1 */
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
/* 使能中断通道 */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
15.编写14题的外部中断的服务程序,完成LED灯(PB2)的开关控制。
答:
合格证英文
约数是什么void EXTI9_5_IRQHandler (void)
{
  //确保是否产生了EXTI Line中断
    if(EXTI_GetITStatus(EXTI_Line5) != RESET)
    {
    //清除中断标志位
        EXTI_ClearITPendingBit(EXTI_Line5);       
        // LED 状态转换       
        GPIO_ToggleBits(GPIOB, GPIO_Pin_2); 
    } 
}

本文发布于:2023-06-24 19:00:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/156313.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   引脚   服务程序
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图