实验原理:

  按键的一端与STM32 PB9相连,另外一端接地,且PB9外接一个1K电阻大小的上拉电阻,

初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V);

当按键按下时,PB9直接被按键短接到GND,呈低电平,因此判断PB9的电平变化可得到按键状态。

实验现象:

  该按键每按下一次,LED改变一次状态。

源代码下载链接:

链接:http://pan.baidu.com/s/1mhPhFfy 密码:rrgr

核心源码:

int main(void)
{ /* USER CODE BEGIN 1 */
static int led_work_status = ;//三色LED工作状态
static int key_status = KEY_UP;//按键松开状态 /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */
SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */
MX_GPIO_Init(); /* USER CODE BEGIN 2 */
LED_RED_ON; //初始化LED状态
/* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
//按键每按下一次切换一次LED状态
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
if(ARM_KEY_STATE == KEY_UP)key_status = KEY_UP;
if(key_status == KEY_UP){
if(ARM_KEY_STATE == KEY_DOWN){
HAL_Delay(); //按键消抖
if(ARM_KEY_STATE == KEY_DOWN){
key_status = KEY_DOWN;
led_work_status += ;
if(led_work_status > )led_work_status = ;
//²Ù×÷LED
switch(led_work_status){
case :
LED_RED_ON;
LED_GREEN_OFF;
LED_BLUE_OFF;
break;
case :
LED_RED_OFF;
LED_GREEN_ON;
LED_BLUE_OFF;
break;
case :
LED_RED_OFF;
LED_GREEN_OFF;
LED_BLUE_ON;
break;
default:
break;
}
}
}
}
}
/* USER CODE END 3 */ }

iCore4链接:

最新文章

  1. setAutoCommmit保持数据的完整性
  2. disable-the-loopback-check-for-specific-host-names-on-all-sharepoint-web-and-application-servers/
  3. difference between append and appendTo
  4. 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
  5. js转换 /Date(1464671903000)/ 格式的日期的方法
  6. 深入理解ServletRequest与ServletResponse
  7. 用UltraISO制作的u盘ubuntu11.04,启动失败解决方案
  8. lnmp停用nginx,改用apache
  9. Annotation介绍@interface
  10. Linux中的syslog 入门学习教程
  11. Java中的守护线程 & 非守护线程(简介)
  12. 虚拟现实,增强现实,VR,AR
  13. 蓝桥杯试题集【Java】
  14. python 算法练习
  15. ural1523 K-inversions
  16. SQL AlawaysOn 之四:故障转移集群
  17. HashMap的存储原理
  18. 使用XStream是实现XML与Java对象的转换(6)--持久化
  19. SQLite 的 EXISTS 与 NOT EXISTS
  20. [Go] Go的WaitGroup计数信号量

热门文章

  1. jquery监听input元素输入
  2. 4572: [Scoi2016]围棋 轮廓线DP KMP
  3. HDU.6155.Subsequence Count(线段树 矩阵)
  4. 20172302 《Java软件结构与数据结构》实验二:树实验报告
  5. 安装ansible集群管理和配置密钥互信
  6. String literal is not properly closed by a double-quote eclipse
  7. Java全栈程序员之01:做个Linux下的程序猿
  8. 服务 Service 简单案例 MD
  9. Eclipse的预设的Include的路径
  10. 微软BI 之SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法