烽火社区

标题: 【原创】【STM32F4探索套件】序列之4:按键FIFO机制 [打印本页]

作者: 老朽新手    时间: 2014-2-26 09:32 PM
标题: 【原创】【STM32F4探索套件】序列之4:按键FIFO机制

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

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

2.程序编写

3.下载验证

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

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

1.用户LED灯原理图

[attach]39432[/attach]

2.用户按键原理图

[attach]39433[/attach]

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

[attach]39434[/attach]

[attach]39435[/attach]


作者: 1254016180962    时间: 2014-2-27 09:32 AM
冰哥继续更新好东东
作者: ddos110119    时间: 2014-2-27 09:34 AM
[attach]39436[/attach] 必须的,这个比较新。很多人都在弄,也许到时有人会逛我们论坛
作者: zzzzzqwe12334    时间: 2014-2-27 12:24 PM

谢谢分享~~


作者: mcdevices3    时间: 2014-2-27 12:50 PM
[attach]39437[/attach]
作者: wuda1983    时间: 2014-4-12 10:49 AM
自己的帖子再刨一下,看看有什么好的对大家有帮助的资料或者帖子不。[attach]39438[/attach]
作者: gronau    时间: 2014-4-20 10:21 AM
很好    支持
作者: 友进芯城    时间: 2014-4-20 07:08 PM
[attach]39439[/attach]

作者: lcyuyan    时间: 2014-4-20 07:28 PM
好东西  大家一起分享
作者: autumn_stone    时间: 2014-4-20 07:31 PM
[attach]39440[/attach]
作者: 德州仪器    时间: 2014-4-21 01:45 PM
谢谢分享!!顶冰哥
作者: csc57    时间: 2014-4-27 10:01 PM
支持
作者: EvelynZhang    时间: 2014-4-27 10:02 PM
[attach]39441[/attach]
作者: Husterbin    时间: 2014-6-10 09:19 AM
谢谢冰哥分享。。。
作者: potatofly    时间: 2014-6-19 11:33 PM
顶 冰哥
作者: 二水ershui    时间: 2014-7-23 09:52 PM
[attach]39442[/attach][attach]39443[/attach]
作者: Mrli2014    时间: 2014-7-23 09:54 PM
[attach]39444[/attach][attach]39445[/attach]
作者: 悟道    时间: 2014-8-14 04:20 PM
[attach]39446[/attach]大家顶才是真的好
作者: pc_based    时间: 2014-8-14 05:50 PM
[attach]39447[/attach]  说的太好了
作者: rain社区管理    时间: 2014-8-14 06:28 PM
顶起啊 量子哥 还是很猛 啊 有时间就是好啊  可惜我们上班好没有网啊 
作者: zhanzifei    时间: 2014-8-14 09:29 PM
加油 刀哥
作者: lovemail    时间: 2014-8-17 11:25 PM
好的  必须的 啊 我得要赶上你啊 
作者: dongps    时间: 2014-8-18 07:47 AM
[attach]39448[/attach]
作者: 回复用户4    时间: 2014-12-18 04:52 PM
谢谢分享顶一个[attach]39449[/attach]
作者: jdcg    时间: 2014-12-18 09:20 PM
[attach]39450[/attach]
作者: cqhoufuqiang    时间: 2014-12-19 02:34 PM
支持啊
作者: hncb0093    时间: 2014-12-19 06:26 PM
谢谢分享顶一个[attach]39451[/attach]
作者: xmzhou    时间: 2014-12-19 07:51 PM
[attach]39452[/attach]
作者: 刘果    时间: 2014-12-19 08:55 PM
[attach]39453[/attach]
作者: guochen3795    时间: 2014-12-27 10:16 AM
写的不错 ,学习啦 
作者: duzj111    时间: 2015-3-15 07:35 PM
欢迎常来。[attach]39454[/attach]




欢迎光临 烽火社区 (http://bbs.cnecport.com/) Powered by Discuz! X3.2