你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
技术帖
话题
资源
创客秀
视频
标签
每日签到
ST意法半导体中文论坛
»
论坛
›
【休闲区】
›
其他
›
【STM32F4探索套件】序列之3:按键FIFO机制 ...
返回列表
查看:
5530
|
回复:
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
这是神马展览?
回复
支持
反对
使用道具
举报
返回列表
浏览过的版块
签到区
STM8
问答
公告&建议
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表