[活动专区] 【AT-START-F407测评】二、GPIO、EXTI

[复制链接]
791|0
 楼主| lisingch 发表于 2021-1-28 17:49 | 显示全部楼层 |阅读模式
       本次实验利用开发板上的用户按键控制三个颜色的LED灯(LED2、LED3、LED4),开机时三个LED灯为全熄状,每按压一次用户按键三个LED灯顺序点亮、熄灭。实验目的为学习了解GPIO、及外部中断配置。
一、实验资源
1、AT-START-F407开发板;
2、keil v5.31.0.0;
3、BSP等相关资源;
二、相关知识学习
1、GPIO
2021-01-28_165026.png
2021-01-28_165057.png
2021-01-28_165836.png
      再看看AT32F407系列微控制器系统架构,从他庞大的系统架构中可以看到所有GPIO均直接挂载到最高频率为240MHz的“AHB”总线,这一点与之前用到过的几款“ARM”芯片不同,这应该是雅特力微控制器的特色之一。
2021-01-28_102553.png
2021-01-28_163927.png

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

2、EXTI
2021-01-28_171332.png
2021-01-28_171352.png
2021-01-28_171523.png
2021-01-28_171551.png
2021-01-28_171640.png
2021-01-28_171717.png

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

四、程序实现
      为方便学习,利用“AT32F4xx_StdPeriph_Lib_V1.2.8”中的“Templates”改了个模板。
2021-01-28_173809.png
主要代码:
  1. /**
  2.   * [url=home.php?mod=space&uid=247401]@brief[/url]  Button EXTI0 Interrupt Handler
  3.   * @param  None
  4.   * @retval None
  5.   */
  6. void EXTI0_IRQHandler(void)
  7. {
  8.         static uint8_t BUTTON_CONT=0;
  9.   Delay_ms(5);
  10.   EXTI_ClearIntPendingBit(BUTTON_EXTI_LINE[gButtonType]);
  11.   if ((GPIO_ReadInputData(BUTTON_GPIO_PORT[gButtonType]) & BUTTON_GPIO_PIN[gButtonType]) == \
  12.       BUTTON_GPIO_PIN[gButtonType])
  13.   {
  14.                 BUTTON_CONT++;
  15.                 if(BUTTON_CONT>3)
  16.                         BUTTON_CONT=0;
  17.                 switch(BUTTON_CONT)
  18.                 {
  19.                         case 0: AT32_LEDn_OFF(LED2);AT32_LEDn_OFF(LED3);AT32_LEDn_OFF(LED4);break;
  20.                         case 1: AT32_LEDn_ON(LED2);AT32_LEDn_OFF(LED3);AT32_LEDn_OFF(LED4);break;
  21.                         case 2: AT32_LEDn_OFF(LED2);AT32_LEDn_ON(LED3);AT32_LEDn_OFF(LED4);break;
  22.                         case 3: AT32_LEDn_OFF(LED2);AT32_LEDn_OFF(LED3);AT32_LEDn_ON(LED4);break;
  23.                         default:break;
  24.                 }
  25.   }
  26. }


五、实验结果
      如前描述。

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

七、附件
GPIO_EXIT.rar (371.43 KB, 下载次数: 16)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

15005

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部