[STM32F4] 【STM32F469I试用】入门(二):GPIO操作

[复制链接]
 楼主| jinyi7016 发表于 2015-12-15 16:49 | 显示全部楼层 |阅读模式
一、开发环境
1、板子:STM32F469I
2、IDE:Keil 5
3、源码,pack for STM32F4
二、概述
GPIO 是学习单片机时最基础、最简单的一个功能。
对于GPIO无非有四种功能。
1、输出IO
2、输入IO
3、中断IO
4、复用
对于复用功能,在相应的外设部分会再有详细的说明,此帖只是针对前三种进行测试说明。
三、正文
1、pack 中的程序都是只读的,要把它们复制出来,留下一个备份,去掉只读属性。
2、打开工程文件,Projects\STM32469I-Discovery\Examples\GPIO\GPIO_EXTI\MDK-ARM\Project.uvprojx
捕获.PNG

3、LED与KEY的原理图,可以得到分配的GPIO号
可以看到,LED使用的GPIO分别是G6、D4、D5、K3
按键使用:A0
捕获.PNG
捕获.PNG
4、程序
添加延时函数:
  1.         void delay()
  2.         {
  3.                 int i;
  4.                 for(i=0;i<0xffffff;i++);
  5.         }
添加初始化 LED3
  1. BSP_LED_Init(LED3);
在main函数中闪烁LED3
  1.                 delay();
  2.                 HAL_GPIO_WritePin(LED3_GPIO_PORT, LED3_PIN , GPIO_PIN_SET);
  3.                 delay();
  4.                 HAL_GPIO_WritePin(LED3_GPIO_PORT, LED3_PIN , GPIO_PIN_RESET);
在此之前,还要对硬件层进行初始化。
  1.   HAL_Init();
对时钟初始化。
  1.   SystemClock_Config();
对按键PA0,设置为中断功能。
  1. static void EXTI0_IRQHandler_Config(void)
  2. {
  3.   GPIO_InitTypeDef   GPIO_InitStructure;

  4.   /* Enable GPIOA clock */
  5.   __HAL_RCC_GPIOA_CLK_ENABLE();

  6.   /* Configure PA.00 pin as input floating */
  7.   GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;
  8.   GPIO_InitStructure.Pull = GPIO_NOPULL;
  9.   GPIO_InitStructure.Pin = GPIO_PIN_0;
  10.   HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);

  11.   /* Enable and set EXTI line 0 Interrupt to the lowest priority */
  12.   HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0);
  13.   HAL_NVIC_EnableIRQ(EXTI0_IRQn);
  14. }

5、结果
LED3(红色闪烁)
按键后,LED1(绿色亮),再按后,灭。






 楼主| jinyi7016 发表于 2015-12-17 17:52 | 显示全部楼层
结贴了,来人啊。。
294479435 发表于 2015-12-17 18:36 | 显示全部楼层
楼主搞的很快啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

148

主题

1411

帖子

12

粉丝
快速回复 返回顶部 返回列表