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

《嵌入式系统设计(基于STM32F429)》
第5章课后题参考答案
1.列举GPIO的工作模式。
答:
(1)输入浮空模式。
(2)输入上拉模式。
(3)输入下拉模式。
(4)模拟功能句柄模式。
(5)具有上拉/下拉功能的开漏输出模式。
(6)具有上拉/下拉功能的推挽输出模式。
(7)具有上拉/下拉功能的复用功能推挽模式。
(8)具有上拉/下拉功能的复用功能开漏模式。
2.STM32F429系列微控制器每个GPIO端口有__16__引脚
3.当引脚被配置为模拟功能模式时上拉/下拉功能应_禁止_。
4.当引脚被配置为输出模式而输出类型被配置为开漏引脚要输出高电平,需要__使能引脚上拉功能____
5.控制引脚输出电平时需要操作__ODR____寄存器获取引脚状态需要操作__IDR____寄存器
6.在stm32f429库函数中,使能GPIOA时钟,使用的库函数是__RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOA, ENABLE)  ____。
7.在stm32f429库函数中,初始化GPIO功能,使用的库函数是__void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)____。
8.当要同时初始化某个GPIO的1号、2号引脚赋给GPIO_InitTypeDef结构体类型成员G
PIO_Pin是__ GPIO_Pin_1 | GPIO_Pin_2 ____。
9.在stm32f429库函数中,读取某个特定GPIO引脚状态,使用的库函数是__uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)____。
10.在stm32f429库函数中,设定某些特定GPIO引脚输出状态,使用的库函数是__void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 和void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)____。
11.结合电路说明推挽输出和开漏输出的区别。
答:
在推挽输出下,输出电路中有PMOS和NMOS管组成的推挽结构电路,当ODR寄存器中对应位写‘1’时,NMOS管截止,PMOS管导通,引脚输出高电平。当ODR寄存器中对应位写‘0’时,NMOS管导通,PMOS管截止,引脚输出低电平。
在开漏输出下,输出电路中有只有NMOS管,当ODR寄存器中对应位写‘1’时,NMOS管截止,这是引脚处于浮空状态,必须通过上拉电阻使引脚输出高电平。当ODR寄存器中对应位写‘0’时,NMOS管导通,PMOS管截止,引脚输出低电平。
12.当把引脚配置为模拟输入模式时,那么它是否还具备耐5V功能?
答:
不具备5V功能
此时,引脚输入通道和数字电路隔离,处于模拟电路状态
13.简述片上外设使用初始化流程。
答:
(1)使能GPIO的时钟(非常重要),涉及以下文件
(2)设置对应于片上外设使用GPIO工作式。
(3)如果使用复用功能,需要单独设置每一个GPIO引脚的复用功能。
(4)在应用程序中读取引脚状态、控制引脚输出状态或使用复用功能完成特定功能。
14.编写程序,将GPIOD1号、3号、5号、7号、9号引脚配置为推挽输出模式,速度为50MHz长江上游,将02号、4号、6号、8号引脚配置为上拉输入模式。
答:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOD, ENABLE);                       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1| GPIO_Pin_3| GPIO_Pin_5| GPIO_Pin_7| GPIO_Pin_9;   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_2| GPIO_Pin_4| GPIO_Pin_6| GPIO_Pin_8;   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; 
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
15.编写程序,将GPIOD1号、5号、7号引脚输出高电平,3号、9号引脚输出低电平,并将引脚2号、6号、8号上的状态读到处理器中。
答:
unsigned short int a,b,c;
GPIO_SetBits(GPIOD , GPIO_Pin_1| GPIO_Pin_5| GPIO_Pin_7) ;
GPIO_ResetBits(GPIOD , GPIO_Pin_3| GPIO_Pin_9) ;
a = GPIO_ReadInputDataBit(GPIOD ,  GPIO_Pin_2) ;
b = GPIO_ReadInputDataBit(GPIOD ,  GPIO_Pin_6) ;
c = GPIO_ReadInputDataBit(GPIOD ,  GPIO_Pin_8) ;
16.有独立按键电路,连接在STM32F429IGT6微控制器的GPIOE5号引脚,要求在每次生物教具制作
按键后将连接GPIOB的2号引脚上的LED灯反转,电路如图5-16所示。
图5-16 题16电路图
请编写程序实现按键动作的检测,编写以下程序。
1)主程序。
变异系数(2)连接按键引脚和LED引脚的初始化程序。
3)按键检测程序。
假设已有延时函数void delay_ms(u16 nms);,此函数可直接调用。
答:
#define KEY_ON      1
#define KEY_OFF      0
1)
int main(void)
{
  delay_init(168);  //初始化延时函数
    LED_GPIO_Config();   
  Key_GPIO_Config();
    while(1)                           
    {     
        if( Key_Scan(GPIOE, GPIO_Pin_5) == KEY_ON  )
        {
            GPIO_ToggleBits(GPIOB, GPIO_Pin_2);
        } 
  }
}
2)
void Key_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
    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); 
}
void LED_GPIO_Config(void)
{       
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOB, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2   
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);   
}
(3)
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{            lg km380
    if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON ) 
    {           
        delay_ms(100);//去抖动
        if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON) 
            return    KEY_ON;   
        else
            return KEY_OFF;
    }
    else
        return KEY_OFF;
}
17.有矩阵按键,其电路如图5-17所示。
1)矩阵按键扫描原理和流程图。
2)编写程序实现矩阵按键控制,按键S1~S4分别对应数字1~4(引脚初始化程序和按键控制程序)。
图5-17 题17电路图
答:
1
开始
线设置为输出模式(图中PB0PB1),并分别在PB0和PB1输出低电平。行线设置为输模式(图中PB2PB3)华丰煤矿吧。都使能上拉。
读取PB2PB3状态,判断是有按键按下。
判断原则:PB2PB3都是高电平时,没有按键按下。PB2PB3有任何一个为低电平是,有按键按下。
判断原理在没有按键按下去的时候,由于上拉电阻存在,PB2PB3都是高电平读取状态,PB2=1PB3=1。如果有按键按下去的话,摸一个行线和列线连接在一起。由于PB0PB1都为低电平,因此连接在一起的行线会被列线下拉到低电平。这时在读取PB2PB3状态时,就不会全是高电平。
例如当按下S1,PB1PB2连在一起,PB2PB1拉低到低电平。读取PB2PB3状态时,PB2=0PB3=1

本文发布于:2024-09-22 01:01:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/570645.html

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

标签:引脚   输出   按键   功能
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议