STM32的按键部分

发布者:trendsetter10最新更新时间:2019-03-28 来源: eefocus关键字:STM32  按键部分 手机看文章 扫描二维码
随时随地手机看文章

什么是上拉电阻?按键的上拉电阻为什么是10k欧姆?


答:上拉电阻就是将一个不确定的信号,通过一个电阻和电源VCC相连,固定在高电平。


作用:


1)增加输出引脚的驱动能力(其实就是增加当前导线的电流);


2)防止引脚悬空,否则会产生积累电荷(静电),影响电路稳定性;


3)特别是按键的时候,引脚电平不定的时候,给它一个确定的电平。


至于为什么是10k?因为电阻越小,功耗越大,电阻越大,芯片引脚识别不了,10k的话是大多数智能设备芯片所能识别到的,这是个折中的方案。


二、库函数


st公司为了编程方便,为coder们,封装了一套库函数,并给出了官方模板。自行百度,网上有很多这种资源,stm32f4xx_dsp_stdperiph_lib_um.chm


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //第0根引脚 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //设置输入模式[重点修改] 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //设置IO的速度为100MHz 

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不需要上拉电阻


GPIO_Init(GPIOF, &GPIO_InitStructure);


使用按键控制灯的亮与灭!例如按键0按下,LED0亮,松开则灭。其他按键如此类推

int main(void) 

/* 使能GPIOA GPIOF端口工作,让GPIOA GPIOF设备时钟使能(上电) */ 

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOF, ENABLE);


/* 让PF9引脚设置为输出模式 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;           //GPIO哪一根引脚,当前是使用第9号引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;       //设置PF9引脚为输出模式,具有输出高电平或低电平的功能

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽输出,让PF9引脚输出的电流更大[可选]

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //PF9引脚工作的速度为100MHz,当前的频率可以是2MHz/25MHz/50MHz/100MHz,频率越高,对应的功耗就越高

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    //不需要上下拉电阻,如果发现PF9引脚需要更大的输出电流,可以使用上拉电阻,设置为GPIO_PuPd_UP,对应的功耗就越高

GPIO_Init(GPIOF, &GPIO_InitStructure);


//熄灭PF9引脚连接的LED灯

GPIO_SetBits(GPIOF,GPIO_Pin_9);


/* 让PA0引脚设置为输入模式 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;           //GPIO哪一根引脚,当前是使用第0号引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;        //设置PA0引脚为输入模式,具有检测引脚高电平或低电平的功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //PA0引脚工作的速度为100MHz,当前的频率可以是2MHz/25MHz/50MHz/100MHz,频率越高,对应的功耗就越高

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    //不需要上下拉电阻,如果发现PF9引脚需要更大的输出电流,可以使用上拉电阻,设置为GPIO_PuPd_UP,对应的功耗就越高

GPIO_Init(GPIOA, &GPIO_InitStructure);


while(1)

{

        //检测KEY0是否有按下,若有按下,则检测到低电平;若没有按下,则检测到高电平

        if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)

        {

            //点灯,PF9引脚为低电平

            GPIO_ResetBits(GPIOF,GPIO_Pin_9);


            //延时,灯亮一会儿

            delay();    


            //灭灯,PF9引脚为高电平

            GPIO_SetBits(GPIOF,GPIO_Pin_9);


            //延时,灯灭一会儿

            delay();                    

        }

}

return 0;


输入模式可以不用配置速度,但是输出模式必须确定最大输出频率。 

当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz、10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。 

高频的驱动电路,噪声也高,当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。 

注意:GPIO的引脚速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与你的程序有关。 

三、时钟体系


1、参考手册 STM32F4xx中文参考手册.pdf 第106页


2、时钟源 

a.可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK),CPU运行的额定频率为168MHz: 

● HSI 振荡器时钟,也就是高速内部时钟,一般来说很少用,因为精度没有外部高速时钟那么高。 

● HSE 振荡器时钟,也就是高速外部时钟,我用的M4开发板为8MHz。 

● 主 PLL (PLL) 时钟


b.器件具有以下两个次级时钟源: 

● 32 kHz 低速内部 RC (LSI RC震荡电路),该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用于停机/待机模式下的自动唤醒。 

● 32.768 kHz 低速外部晶振(LSE 晶振),用于驱动 RTC 时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗。


关键字:STM32  按键部分 引用地址:STM32的按键部分

上一篇:STM32按键程序
下一篇:stm32按键 长按 短按 函数

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

Stm32端口复用和重映射介绍
说在前面: 1.项目的软件部分完成,准备开始硬件测试,希望不要出太大乱子 端口复用 1.介绍: 在stm32中存在着很多的内置外设(ADC,DAC,串口),为了使得引脚最大利用化,可以将GPIO口复用为其他内部外设的引脚. 2.复用端口的步骤: 1.实现GPIO口的时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 2.实现复用时钟的配置AFIO的配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); 3.使用GPIO口的配置(normal) 4实现端口的配置(复
[单片机]
STM32的GPIO介绍及电路图讲解
STM32的GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。 STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复
[单片机]
<font color='red'>STM32</font>的GPIO介绍及电路图讲解
STM32开源代码——UART串口程序
#include led.h #include delay.h #include key.h #include sys.h #include usart.h /************************************************ ALIENTEK精英STM32开发板 作者:唯恋殊雨 CSDN博客:https://blog.csdn.net/tichimi3375 TX-PA10 RX-PA9 ************************************************/ int main(void) { u16 t; u16 le
[单片机]
STM32 GPIO初始化步骤
1、使能GPIO时钟:RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); 参数说明: 例如: 2、设置GPIO参数:输出OR输入,工作模式,端口翻转速率; 3、调用初始化函数:GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 参数说明: 例如: 4、操作GPIO。
[单片机]
<font color='red'>STM32</font> GPIO初始化步骤
STM32定时器周期计算
STM32定时器周期计算 公式是: ((1+TIM_Prescaler )/时钟)*(1+TIM_Period ) F103配置生成1ms的时钟((1+35 )/36M)*(1+999 ) = 1MS TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; TIM_DeInit(TIM5); TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABL
[单片机]
stm32关于串口输出的几种常用方式
在使用stm32做项目时,我们常常会使用到串口调试,通过串口来输出我们想要看的相关参数值,这样既方便有快捷。 具体方法有哪些呢,我自己整理了一下,这个也是借鉴别人的用法而已。希望大家可以相互讨论学习。 1、使用printf语句通过串口输出我们想要的参数值 具体的用法:使用之前必须包含相应的头文件#include stdio.h int fputc(int ch, FILE *f)//重定向,让printf输出到串口 { USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TC) ==
[单片机]
<font color='red'>stm32</font>关于串口输出的几种常用方式
STM32与DS1302设计时钟芯片,超详细
DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)RES 复位(2)I/O 数据线(3)SCLK串行时钟。时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信。DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW DS1302 是由DS1202 改进而来增加了以下的特性:双电源
[单片机]
<font color='red'>STM32</font>与DS1302设计时钟芯片,超详细
基于Cortex-M3的STM32微控制器处理先进电机控制方法
  变频器的问世和先进的 电机控制 方法让 三相无刷电机 (交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3内核的STM32系列微控制器为例论述这个过程。   首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明
[安防电子]
基于Cortex-M3的<font color='red'>STM32</font>微控制器处理先进电机控制方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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