【iCore4 双核心板_ARM】例程二:读取ARM按键状态
2024-10-13 02:32:09
实验原理:
按键的一端与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链接:
最新文章
- setAutoCommmit保持数据的完整性
- disable-the-loopback-check-for-specific-host-names-on-all-sharepoint-web-and-application-servers/
- difference between append and appendTo
- 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
- js转换 /Date(1464671903000)/ 格式的日期的方法
- 深入理解ServletRequest与ServletResponse
- 用UltraISO制作的u盘ubuntu11.04,启动失败解决方案
- lnmp停用nginx,改用apache
- Annotation介绍@interface
- Linux中的syslog 入门学习教程
- Java中的守护线程 &; 非守护线程(简介)
- 虚拟现实,增强现实,VR,AR
- 蓝桥杯试题集【Java】
- python 算法练习
- ural1523 K-inversions
- SQL AlawaysOn 之四:故障转移集群
- HashMap的存储原理
- 使用XStream是实现XML与Java对象的转换(6)--持久化
- SQLite 的 EXISTS 与 NOT EXISTS
- [Go] Go的WaitGroup计数信号量
热门文章
- jquery监听input元素输入
- 4572: [Scoi2016]围棋 轮廓线DP KMP
- HDU.6155.Subsequence Count(线段树 矩阵)
- 20172302 《Java软件结构与数据结构》实验二:树实验报告
- 安装ansible集群管理和配置密钥互信
- String literal is not properly closed by a double-quote eclipse
- Java全栈程序员之01:做个Linux下的程序猿
- 服务 Service 简单案例 MD
- Eclipse的预设的Include的路径
- 微软BI 之SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法