查看: 979|回复: 30
打印 上一主题 下一主题

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

[复制链接] qrcode

32

主题

34

帖子

103

积分

注册会员

Rank: 2

积分
103
楼主
跳转到指定楼层
发表于 2014-2-26 09:32 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

2.程序编写

3.下载验证

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

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

1.用户LED灯原理图

2.用户按键原理图

系列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进行烧录下载,效果图,如下图所示。绿灯闪烁,只用用户按键按下红灯才亮,松手就熄灭。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

1

主题

83

帖子

23

积分

新手上路

Rank: 1

积分
23
沙发
发表于 2014-2-27 09:32 AM | 只看该作者
冰哥继续更新好东东
回复 支持 反对

使用道具 举报

0

主题

84

帖子

26

积分

新手上路

Rank: 1

积分
26
板凳
发表于 2014-2-27 09:34 AM | 只看该作者
 必须的,这个比较新。很多人都在弄,也许到时有人会逛我们论坛

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

82

帖子

26

积分

新手上路

Rank: 1

积分
26
地板
发表于 2014-2-27 12:24 PM | 只看该作者

谢谢分享~~

回复 支持 反对

使用道具 举报

1

主题

101

帖子

19

积分

新手上路

Rank: 1

积分
19
5#
发表于 2014-2-27 12:50 PM | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

9

主题

86

帖子

41

积分

新手上路

Rank: 1

积分
41
6#
发表于 2014-4-12 10:49 AM | 只看该作者
自己的帖子再刨一下,看看有什么好的对大家有帮助的资料或者帖子不。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

3

主题

145

帖子

159

积分

注册会员

Rank: 2

积分
159
7#
发表于 2014-4-20 10:21 AM | 只看该作者
很好    支持
回复 支持 反对

使用道具 举报

14

主题

129

帖子

128

积分

注册会员

Rank: 2

积分
128
8#
发表于 2014-4-20 07:08 PM | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

1

主题

102

帖子

43

积分

新手上路

Rank: 1

积分
43
9#
发表于 2014-4-20 07:28 PM | 只看该作者
好东西  大家一起分享
回复 支持 反对

使用道具 举报

0

主题

91

帖子

4

积分

新手上路

Rank: 1

积分
4
10#
发表于 2014-4-20 07:31 PM | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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