STM32学习笔记--按键输入实验

发布者:导航灯最新更新时间:2019-06-24 来源: eefocus关键字:STM32  初始化函数  按键输入 手机看文章 扫描二维码
随时随地手机看文章

//按键初始化函数

//特别注意:在该函数之后,JTAG将无法使用(SWD也无法使用)

//如果想JTAG仿真,可以屏蔽该函数。

//PA0.13.15 设置成输入

void KEY_Init(void)

{

RCC->APB2ENR|=1<<2;     //使能PORTA时钟

GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入 

GPIOA->CRL|=0X00000008;   

GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入 

GPIOA->CRH|=0X80800000;   

GPIOA->ODR|=1<<13;  //PA13上拉,PA0默认下拉

GPIOA->ODR|=1<<15;  //PA15上拉

//按键处理函数

//返回按键值

//0,没有任何按键按下

//1,KEY0按下

//2,KEY1按下

//3,KEY2按下 WK_UP

//注意此函数有响应优先级,KEY0>KEY1>KEY2!!

u8 KEY_Scan(void)

{  

static u8 key_up=1;//按键按松开标志

JTAG_Set(JTAG_SWD_DISABLE);

if(key_up&&(KEY0==0||KEY1==0||KEY2==1))

{

delay_ms(10);//去抖动 

key_up=0;

if(KEY0==0)

{

JTAG_Set(SWD_ENABLE);

return 1;

}

else if(KEY1==0)

{

JTAG_Set(SWD_ENABLE);

return 2;

}

else if(KEY2==1)

{

JTAG_Set(SWD_ENABLE);

return 3;

}

}else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1;   

JTAG_Set(SWD_ENABLE);

return 0;// 无按键按下

}



最基本的代码正确性要保证,最低级的错误不要犯。基础的构造,比如:库函数的路径的添加,函数的初始化问题等等

关键字:STM32  初始化函数  按键输入 引用地址:STM32学习笔记--按键输入实验

上一篇:STM32CubeMX下按键模块控制PWM蜂鸣器模块
下一篇:STM32之按键+蜂鸣器

推荐阅读最新更新时间:2024-11-09 16:26

STM32函数开发&按键函数开发源码篇
LED流水灯 led.h #ifndef __LED_H #define __LED_H #include stm32f4xx.h void Led_Init(void); void Led1_Init(void); void Led2_Init(void); void Led3_Init(void); void Led4_Init(void); #endif typedef struct { uint32_t GPIO_Pin; /* 指定要配置的GPIO引脚 */ GPIOMode_TypeDef GPIO_Mode; /* 指定选定接点的操作模式。*/
[单片机]
STM32基础之串口通信
串口通讯协议简介: 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。 串行通信的分类 1、按照数据传送方向,分为: **单工:**
[单片机]
<font color='red'>STM32</font>基础之串口通信
STM32学习笔记(1):GPIO口的使用
实验平台清单如下: 开发板:奋斗STRIVE V3 核心芯片: STM32F103VET6 开发环境: RealView MDK-ARM Version:3.50 PC操作系统: Windows 7家庭普通版 仿真器: SEGGER J-Link 其中,STM32F103VET6芯片是基于ARM Cortex-M3内核的,具体技术参数请参考ST公司给出的芯片资料( http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00191185.pdf )。关于该芯片的其他资料,可以在 http://www.st.com/cn/
[单片机]
STM32学习笔记(2)外部中断
一、中断 1.什么是中断 操作系统需要管理外设,但是外设的速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率。 为此我们引入了中断机制,让外设在需要操作系统处理外设相关事件的时候,能够主动通知操作系统,即当CPU收到中断或者异常的事件时,打断操作系统和应用的正常执行,暂停执行当前的程序或任务,让操作系统完成外设的相关处理,在完成对这个事件的处理后,再恢复操作系统和应用的正常执行。 举个栗子,当你在读文章时忽然来了一个电话,你会先去接电话,等电话挂断后你又接着回来读文章,接电话这一过程就是执行中断。 正是由于中断机制,计算机系统才能有条不紊地“同时”完成多个任务,中断机制实质上帮助提高了并
[单片机]
<font color='red'>STM32</font>学习笔记(2)外部中断
stm32 中断系统
stm32f103中有60个中断,现阶段了解的中断有:定时器中断,串口中断,GPIO中断 中断第二级开关:NVIC 寄存器: ISER 中断使能寄存器 ICER中断清除寄存器 IP中断优先级寄存器 还有一些其他的寄存器我们现阶段用不到 ISPR中断使能悬起寄存器ICPR中断清除悬起寄存器IABR中断有效位寄存器STIR软件触发中断寄存器 他们都属于NVIC_Type结构体中的成员,直接调用更改内容 库函数文件包含在misc.c和misc.h 配置中断步骤:1.使能外设中断 2.设置中断优先级分组,初始化NVIC——InitTypeDef结构体设置抢占优先级和响应优先级,使能中断 中断源在stm32f10x.h文件的
[单片机]
结合STM32单片来讲讲结构体的运用
摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必须要掌握的,如果你C语言掌握的不牢,单片机根本学不到精髓,只能完成一些低级的项目。看得懂结构体并且能够灵活运用结构体才能说你入门了单片机。本篇将以最通俗的方式结合STM32单片来讲讲结构体的运用。解决你学完C语言、考过了计算机二级还是看不懂单片机结构体的苦恼。宝藏文章,记得点赞转发收藏。 大家知道指针和结构体是单片机的难点,所以就去学习C语言,找视频看书。 这里面每一个视频的播放量都非常高。对于单纯的学习C语言,这里讲的很清楚。看完你不禁在下面评论一句:哇!讲的真的太清楚了吧!但是等你真正的学单片机的时候,你会发现我不是学过C语言吗?计算机二级我也过了
[单片机]
如何开发功能齐全的QSPI驱动
1. 摘要 本篇笔记主要介绍,如何开发稳定可靠,功能齐全的QSPI驱动。 2. 准备工作 1, IAR 8.32.1 2, STM32Cube_FW_H7_V1.6.0 3. QSPI简介 4. QSPI驱动 在项目的开发中,我们经常会使用外挂Flash在做一些应用,而STM32H743带QSPI接口,可以用来外挂QSPI Flash,在之前的推送中我们以winbond华邦的W25Q256为例给大家说明了下QSPI的操作,借助ST的HAL库例程可以快速验证,不同型号的QSPI Flash会有一些参数和命令区别,大家应用时候要注意,例如美光和华邦的有的命令码就不同。ST的驱动里STM32H743的评估板是以美光的MT25T_QL
[单片机]
如何开发功能齐全的QSPI驱动
STM32开发笔记81: 在逻辑层建立任务的方法
单片机型号:STM32L053R8T6 项目中应用FreeRTOS操作系统后,可以将任务单独封类,以使程序结构上更容易理解,操作更为方便简单。本文介绍在项目的逻辑层,将任务单独封类的步骤。 1、在Keil中建立2个空白文档,然后进行保存,将其保存到项目中逻辑层所对应的相应文件夹中,如下图所示,两个文件分别以.h和.cpp作为后缀。 2、将上述建立的2个文件加入到逻辑层中,如下图所示。 3、将下述样例程序加入到相应的.h文件中。 #ifndef EMBED_TASK_H_ #define EMBED_TASK_H_ #ifdef __cplusplus extern C { class CEmbedTas
[单片机]
<font color='red'>STM32</font>开发笔记81: 在逻辑层建立任务的方法
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved