[STM32F4]

nucleo STM32F413ZH自学进程——蓝色用户按钮实现 RGB LED 翻转

[复制链接]
734|6
手机看帖
扫描二维码
随时随地手机跟帖
dingbo95|  楼主 | 2018-1-27 10:36 | 显示全部楼层 |阅读模式
本帖最后由 dingbo95 于 2018-1-27 10:40 编辑

从官方给的文档可知 这块板卡有两个按钮 一个是复位按钮 一个是用户按钮(可编程)此外也要注意短接SB的连接。 1.PNG
dingbo95|  楼主 | 2018-1-27 11:38 | 显示全部楼层
现在我们来操作B1 默认连接在PC13  ,在上一次的LED的基础我们来修改。
新建key.c  与key.h  本次我们使用查询方式
1.PNG




使用特权

评论回复
dingbo95|  楼主 | 2018-1-27 11:40 | 显示全部楼层
在key.c中 进行宏定义以及函数声明

//用户按钮
#define userkey_PIN          GPIO_Pin_13
#define userkey_GPIO_PORT    GPIOC
#define userkey_GPIO_CLK     RCC_AHB1Periph_GPIOC

//按钮按下标志宏
//ON    按下为低电平
//OFF   按下为高电平

#define KEY_ON   0
#define KEY_OFF  1


void key_init(void);
u8 key_scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);

使用特权

评论回复
dingbo95|  楼主 | 2018-1-27 11:41 | 显示全部楼层
在key.c文件中进行按键初始化和轮询查询方式
void key_init()
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd ( userkey_GPIO_CLK, ENABLE);
  GPIO_InitStructure.GPIO_Pin = userkey_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;       //输入模式
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;   //不上拉也不下拉
        GPIO_Init(userkey_GPIO_PORT, &GPIO_InitStructure);
}

u8 key_scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
    if (GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )      //检测是否有按键按下
                {
      while (GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON); //等待按键释放
      return KEY_ON;  
   }
                else
    return KEY_OFF;
}

使用特权

评论回复
dingbo95|  楼主 | 2018-1-27 11:43 | 显示全部楼层
主函数部分 实现按钮按下三颗RGB LED翻转 1.PNG

使用特权

评论回复
dingbo95|  楼主 | 2018-1-27 11:45 | 显示全部楼层
按下蓝色按钮即可实现LED的翻转
1.jpg

使用特权

评论回复
dingbo95|  楼主 | 2018-1-27 11:47 | 显示全部楼层
这次试验比较简单,下次我们通过外部中断来实现。

使用特权

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

本版积分规则

52

主题

1197

帖子

5

粉丝