打印
[活动专区]

【AT-START-F407测评】二、GPIO、EXTI

[复制链接]
520|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
       本次实验利用开发板上的用户按键控制三个颜色的LED灯(LED2、LED3、LED4),开机时三个LED灯为全熄状,每按压一次用户按键三个LED灯顺序点亮、熄灭。实验目的为学习了解GPIO、及外部中断配置。
一、实验资源
1、AT-START-F407开发板;
2、keil v5.31.0.0;
3、BSP等相关资源;
二、相关知识学习
1、GPIO



      再看看AT32F407系列微控制器系统架构,从他庞大的系统架构中可以看到所有GPIO均直接挂载到最高频率为240MHz的“AHB”总线,这一点与之前用到过的几款“ARM”芯片不同,这应该是雅特力微控制器的特色之一。



      另外,AT32F407的大部分的IO引脚(除了PC13~PC15、PD0、PD1、PA0、PA11、PA12等几个引脚外)都具备5v电平容忍能力,当然在具体应用中还要按数据手册的要求进行操作。



2、EXTI







三、硬件连接


      从以上的原理图中可以看出,三个LED分别与PD13、PD14、PD15三个IO端口相连,当这三个端口输出低电平时LED被点亮;用户按键“B2”一端与“VDD”相连,另外一端通过“R19”与PA0相连,这意味着当“B2”按下会在PA0端口上产生“高电平”或“上升沿”信号,触发“EXTI”线中断。

四、程序实现
      为方便学习,利用“AT32F4xx_StdPeriph_Lib_V1.2.8”中的“Templates”改了个模板。

主要代码:
/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]  Button EXTI0 Interrupt Handler
  * @param  None
  * @retval None
  */
void EXTI0_IRQHandler(void)
{
        static uint8_t BUTTON_CONT=0;
  Delay_ms(5);
  EXTI_ClearIntPendingBit(BUTTON_EXTI_LINE[gButtonType]);
  if ((GPIO_ReadInputData(BUTTON_GPIO_PORT[gButtonType]) & BUTTON_GPIO_PIN[gButtonType]) == \
      BUTTON_GPIO_PIN[gButtonType])
  {
                BUTTON_CONT++;
                if(BUTTON_CONT>3)
                        BUTTON_CONT=0;
                switch(BUTTON_CONT)
                {
                        case 0: AT32_LEDn_OFF(LED2);AT32_LEDn_OFF(LED3);AT32_LEDn_OFF(LED4);break;
                        case 1: AT32_LEDn_ON(LED2);AT32_LEDn_OFF(LED3);AT32_LEDn_OFF(LED4);break;
                        case 2: AT32_LEDn_OFF(LED2);AT32_LEDn_ON(LED3);AT32_LEDn_OFF(LED4);break;
                        case 3: AT32_LEDn_OFF(LED2);AT32_LEDn_OFF(LED3);AT32_LEDn_ON(LED4);break;
                        default:break;
                }
  }
}


五、实验结果
      如前描述。

六、总结
      通过本次实验对AT-START-F407开发板有了初步的认识,实验的成功得意于雅特力提供各项资料的完美,使得上手学习的过程比较顺利。

七、附件
GPIO_EXIT.rar (371.43 KB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

14990

帖子

17

粉丝