【原创】【STM32F4探索套件】序列之4:按键FIFO机制

  • 冰山一角
  • LV5工程师
  • |      2014-02-26 21:32:52
  • 浏览量 6951
  • 回复:34

本节我们将原理图、代码和验证三部分来分析,主要是从下面3个方面进行讲解:

1.STM32F4探索套件的原理图部分

2.程序编写

3.下载验证

一、STM32F4探索套件的原理图部分:

下面主要看的是STM32F4探索套件的LED灯部分和用户按键部分的原理图。

1.用户LED灯原理图

【原创】【STM32F4探索套件】序列之4:按键FIFO机制

2.用户按键原理图

【原创】【STM32F4探索套件】序列之4:按键FIFO机制

系列3已经讲解了LED灯。下面主要是按键部分。

FIFO是先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。按照这个思想,按键本身支持FIFO,按下,弹起,长按和组合功能的。


二、程序编写

在写程序的时候,首先按一下步骤检查是否已经完备。

1.确保JP3CN4跳线是连接的【Discovery模式】。

2.通过Min USB把开发板和电脑连接,USB供电。

3.通过ST-Link/V2来下载程序。

4.检查USB通讯的LED1灯是否亮,电源灯LED2是否亮(3.3v)

5.以上正常就可以进行下面的工作了。

通过上面的原理图我们可以实现按键的FIFO

例程整体功能描述:

1.创建一个1ms的滴答定时器中断以实现软件定时器

2.主程序创建一个100ms的自动重装软件定时器,LED1100ms翻转一次。

3.创建一个按键的FIFO

4.K1按键按下点亮LED2,弹起熄灭LED2


/*

* Copyright (c) 2014, 鑫亮电子

* All rights reserved.

文件名称:主函数

摘    要:本期教程是为官方F429探索套件做的按键FIFO实验

*              整体功能如下:

*              1. 创建一个1ms的滴答定时器中断以实现软件定时器

*              2. 主程序创建一个100ms的自动重装软件定时器,LED1

*                 100ms翻转一次。

*              3. 创建一个按键的FIFO

*              4. K1按键按下点亮LED2,弹起熄灭LED2

硬件平台:STM32F4探索套件

当前版本:V0.0

作    者:@鑫亮电子(QQ:2550634286)

完成日期:2014-02-26

修改记录:

*/


#include "bsp.h" /* 底层硬件驱动 */


/* 定义例程名和例程发布日期 */

#define EXAMPLE_NAME "F429-002_按键FIFO"

#define EXAMPLE_DATE "2013-12-05"

#define DEMO_VER "1.0"


/***************************************

函数描述:主函数

输入参数:No

返 回 值:No

说    明:跑马灯

修改记录: 

****************************************/

int main(void)

{

uint8_t ucKeyCode; /* 按键代码 */


/*ST固件库中的启动文件已经执行了 SystemInit() 函数,该函数在system_stm32f4xx.c 文件,主要功能是配置CPU系统的时钟,内部Flash访问时序,配置FSMC用于外部SRAM*/


bsp_Init(); /* 硬件初始化 */


bsp_StartAutoTimer(0, 100); /* 启动1500ms的自动重装的定时器 */


/* 进入主程序循环体 */

while (1)

{

bsp_Idle(); /* 这个函数在bsp.c文件。用户可以修改这个函数实现CPU休眠和喂狗 */


if (bsp_CheckTimer(0)) /* 判断定时器超时时间 */

{

bsp_LedToggle(1); /* 翻转LED4的状态 */

}


ucKeyCode = bsp_GetKey(); /* 读取键值无键按下时返回 KEY_NONE = 0 */

if (ucKeyCode != KEY_NONE)

{


switch (ucKeyCode)

{

case KEY_DOWN_K1: /* K1键按下 */

bsp_LedOn(2);

break;


case KEY_UP_K1: /* K1键弹起 */

bsp_LedOff(2);

break;


/* 长按有点问题,怀疑和按键的外部滤波有关 */

case KEY_LONG_K1: /* K1键长按 */

bsp_LedToggle(2);

break;


default:

/* 其他的键值不处理 */

break;

}

}


}

}


/***************************** 鑫亮电子 (END OF FILE) *********************************/


三、下载验证

通过Min-USB进行烧录下载,效果图,如下图所示。绿灯闪烁,只用用户按键按下红灯才亮,松手就熄灭。

【原创】【STM32F4探索套件】序列之4:按键FIFO机制

【原创】【STM32F4探索套件】序列之4:按键FIFO机制

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:32
冰山一角 2015-05-05
0   回复
举报
发布
马超飞燕 2015-05-04
谢谢分享顶一个
0   回复
举报
发布
冰山一角 2015-03-19
0   回复
举报
发布
马踏匈奴 2015-03-19
谢谢分享顶一个
0   回复
举报
发布
冰山一角 2015-03-15
欢迎常来。
0   回复
举报
发布
franki 2014-12-27
写的不错 ,学习啦 
0   回复
举报
发布
冰山一角 2014-12-19
0   回复
举报
发布
冰山一角 2014-12-19
0   回复
举报
发布
马超飞燕 2014-12-19
谢谢分享顶一个
0   回复
举报
发布
两三点雨山前 2014-12-19
支持啊
0   回复
举报
发布
查看更多
x
收藏成功!点击 我的收藏 查看收藏的全部帖子