你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
ST意法半导体中文论坛
»
论坛
›
【休闲区】
›
其他
›
【STM32F4探索套件】序列之3:按键FIFO机制 ...
返回列表
查看:
5483
|
回复:
1
【STM32F4探索套件】序列之3:按键FIFO机制
[复制链接]
outstanding1573
outstanding1573
当前离线
在线时间
21 小时
UID
267724
ST金币
0
蝴蝶豆
0
注册时间
2011-3-8
30
主题
318
回帖
0
蝴蝶豆
中级会员
中级会员, 积分 415, 距离下一级还需 85 积分
最后登录
2017-12-6
收听TA
发消息
发表于 2014-3-18 09:04:02
|
显示全部楼层
|
阅读模式
a0a.1 0b0c
本节我们将原理图、代码和验证三部分来分析,主要是从下面3个方面进行讲解:
1.STM32F4探索套件的原理图部分
2.程序编写
3.下载验证
一、STM32F4探索套件的原理图部分:
下面主要看的是STM32F4探索套件的LED灯部分和用户按键部分的原理图。
1.用户LED灯原理图
2.用户按键原理图
系列3已经讲解了LED灯。下面主要是按键部分。
FIFO是先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。按照这个思想,按键本身支持FIFO,按下,弹起,长按和组合功能的。
二、程序编写
在写程序的时候,首先按一下步骤检查是否已经完备。
1.确保JP3和CN4跳线是连接的【Discovery模式】。
2.通过Min USB把开发板和电脑连接,USB供电。
3.通过ST-Link/V2来下载程序。
4.检查USB通讯的LED1灯是否亮,电源灯LED2是否亮(3.3v)
5.以上正常就可以进行下面的工作了。
通过上面的原理图我们可以实现按键的FIFO。
例程整体功能描述:
1.创建一个1ms的滴答定时器中断以实现软件定时器
2.主程序创建一个100ms的自动重装软件定时器,LED1每100ms翻转一次。
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); /* 启动1个500ms的自动重装的定时器 */
/* 进入主程序循环体 */
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进行烧录下载,效果图,如下图所示。绿灯闪烁,只用用户按键按下红灯才亮,松手就熄灭。
回复
使用道具
举报
shanji
shanji
当前离线
在线时间
310 小时
UID
2058951
ST金币
0
蝴蝶豆
63
注册时间
2013-11-23
25
主题
455
回帖
63
蝴蝶豆
金牌会员
金牌会员, 积分 4333, 距离下一级还需 667 积分
最后登录
2020-9-21
收听TA
发消息
发表于 2015-9-18 13:59:17
|
显示全部楼层
a0a.1 0b0c
这是神马展览?
回复
支持
反对
使用道具
举报
返回列表
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表