STM32——按键输入之static

发布者:alpha11最新更新时间:2017-11-08 来源: eefocus关键字:STM32  按键输入  static 手机看文章 扫描二维码
随时随地手机看文章

Static申明的局部变量,存储在静态存储区。

它在函数调用结束之后,不会被释放。它的值会一直保留下来。

所以可以说static申明的局部变量,具有记忆功能。

按键扫描(支持连续按)的一般思路

 u8 KEY_Scan(void)

    {

      if(KEY按下)

     {

           delay_ms(10);//延时10-20ms,防抖。

           if(KEY确实按下)

            {

               return KEY_Value;

            }

          return;// 无效值

     }

    }


按键扫描(不支持连续按)的一般思路

u8 KEY_Scan(void)

    {

     static u8 key_up=1;

      if(key_up &&  KEY)//按下

      {

        delay_ms(10);//延时,防抖

        key_up=0;//标记这次key已经按下

        if(KEY)//确实按下

          {

           return KEY_VALUE;

          }

        }else if(KEY没有按下)  key_up=1;

       return ;//没有按下

    }


  按键扫描(两种模式合二为一)的一般思路


 u8 KEY_Scan(u8 mode)

    {

     static u8 key_up=1;

     if(mode==1) key_up=1;//支持连续按

      if(key_up &&  KEY按下)

      {

        delay_ms(10);//延时,防抖

        key_up=0;//标记这次key已经按下

        if(KEY确实按下)

          {

           return KEY_VALUE;

          }

        }else if(KEY没有按下)  key_up=1;

       return 没有按下

    }


关键字:STM32  按键输入  static 引用地址:STM32——按键输入之static

上一篇:STM32串口发送字符串函数
下一篇:FreeRTOS在STM32应用中的中断优先级设置问题

推荐阅读最新更新时间:2024-03-16 15:43

stm32中断嵌套实例分析
  STM32中断嵌套方法   STM32中断嵌套方法先说明: 所有中断要放在同一个组里, 因为只有组确定了, 4位描述占先式优先级和副优先级的位数才可以确定。   NVIC——Nested Vectored Interrupt Controller(嵌套中断向量控制器)   STM32有43个channel的settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4bits。这4个bits用于分配pre-emption优先级和sub优先级,在STM32的固件库中定义如下:   NVIC_PriorityGroup_0 ((u32)0x
[单片机]
<font color='red'>stm32</font>中断嵌套实例分析
stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法
说明:库文件版本:3.5.0 软件环境:iar for arm 在系统复位的时候默认是开启JTAG与swd的,在点击下载后的2秒内按下复位键即可将程序下载进stm32 注意:在程序里边加入GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); 来彻底解除限制,或用写寄存器的方式,SWG_CFG 写入000
[单片机]
STM32开发板基础教程(十) - RTC初探
STM32的RTC实际是一个独立的定时器。 下面将介绍如何使用RTC。 我们将头一次牵扯到振源的问题。 首先介绍一下STM32使用的各种振源。 有三种 HSE: 外置晶振 HSI: 内置RC振荡 LSE: 外置RTC振荡(32768居多) APB1 和 APB2 是经过PLL以后的振荡源。 STM32启动,首先使用的HSI振荡,在确认HSE振荡可用的情况下,才可以转而使用HSE, 当HSE出现问题,STM32可自动切换回HSI振荡,维持工作。 LSE振荡则是专门供RTC使用。 LSE晶振需要特别注意。 STM32非常奇怪,要求使用 6p负载的晶振, 市面买到的时钟晶振,绝大多是是12.5pF的 算是一个不小的bug, 大家
[单片机]
<font color='red'>STM32</font>开发板基础教程(十) - RTC初探
STM32 F1 TIM4 4通道PWM同时输出
void TIM4_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //
[单片机]
6步教你在STM32程序中添加 printf函数
简介:6步教你在STM32程序中添加 printf函数 前提是你有一个完整的keil工程 比如ADC的 调试的时候很多时候用到串口 这里教你怎么样使用Printf 函数 在程序中添加Printf 1, #include stdio.h 2, /* Private functions ---------------------------------------------------------*/ 下添加 void USART_Configuration(void); #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker
[单片机]
STM32 HAL固件库编程的文件构架
  对于我这种以前只接触过51和AVR单片机编程的小菜来说,现在开始学习STM32的编程,对于函数的功能以及C语言的语法都还好理解,难的是它提供的那一套硬件抽象层(HAL)驱动是怎么和其他的东东搭配在一起组成一个又一个的工程。   首先上两张从ST官方提供的HAL固件库文档截图 从这两张图的话,能对它的构架看出个一二,下面稍稍具体一点分析   HAL固件库编程,它的文件组织大致分三个部分     - HAL驱动     - CMSIS驱动     - 用户编写程序 而假如你使用的是ST官网的开发板,那么你还有一套现成的驱动可供使用,板级支持包(BSP),那么正好向我一样,但是,我不太喜欢使用这个东西,能自己写还是自己写的好。
[单片机]
<font color='red'>STM32</font> HAL固件库编程的文件构架
STM32定时器之定时时间
STM32的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基本的定时,还可以做PWM输出或者输入捕获功能。 时钟源问题: 名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在 APB1总线上。其中TIM1&TIM8称为高级控制定时器(advanced control timer).他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。 下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作
[单片机]
STM32之TIM1高级定时器
定时器应用之PWM输出 1.1 TIM1_CH1N 与 TIM1_CH1 的区别 在刚准备使用定时器的时候,我看了下原理图,发现对于定时器1,它的每一个输出通道都是成对的,即TIM1_CH1N与TIM1_CH1两个一组,通过网络查询后,明白了芯片这样设计的原因。 TIM1是一个完整的电机控制用定时器外设,TIM1_CH1和TIM1_CH1N,用于驱动上下两个功率管。如果Deadtime为0,则 TIM1_CH1N是TIM1_CH1的反相,如果Deadtime不为0,则在TIM1_CH1N上插入了Deadtime,防止上下功率管同时导通。 另外的两类管脚定义: TIM1_ETR是外部触发输入管脚; TIM1_BKIN是故障信
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved