本节我们将原理图、代码和验证三部分来分析,主要是从下面3个方面进行讲解: 1.STM32F4探索套件的原理图部分 2.程序编写 3.下载验证 一、STM32F4探索套件的原理图部分: 下面主要看的是STM32F4探索套件的LED灯部分和用户按键部分的原理图。 1.用户LED灯原理图 file:///f:/INSTAL~1/360/360se6/USERDA~1/Temp/224924~1.PNG
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进行烧录下载,效果图,如下图所示。绿灯闪烁,只用用户按键按下红灯才亮,松手就熄灭。 |