STM32---按键学习

发布者:沭阳小黄同志最新更新时间:2019-03-14 来源: eefocus关键字:STM32  按键学习 手机看文章 扫描二维码
随时随地手机看文章

#include "stm32f10x.h"  

GPIO_InitTypeDef GPIO_InitStructure;//声明GPIO_InitStructure  

void LED_Init() { 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开GPIOA时钟  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //推挽输出 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  // 最高输出速率50MHz GPIO_Init(GPIOA, &GPIO_InitStructure);             //初始化GPIOA }  

void BEEP_Init() { 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); //开GPIOD时钟  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  // 最高输出速率2MHz GPIO_Init(GPIOD, &GPIO_InitStructure); 

}  

void KEY_Init() { 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//开GPIOD时钟  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入


GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  // 最高输出速率2MHz GPIO_Init(GPIOD, &GPIO_InitStructure);              //初始化GPIOD 

}  

int main() { 

LED_Init(); BEEP_Init(); KEY_Init(); for(;;) { 

if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_13)==0)//按键按下 { 

GPIO_SetBits(GPIOA, GPIO_Pin_4);//置一,发光二级管亮 GPIO_ResetBits(GPIOD, GPIO_Pin_3);//清零,蜂鸣器响 } 

else//按键未按下 { 

GPIO_ResetBits(GPIOA, GPIO_Pin_4);//清零,发光二级管灭 GPIO_SetBits(GPIOD, GPIO_Pin_3);//置一,蜂鸣器不响 } } 

}

关键字:STM32  按键学习 引用地址:STM32---按键学习

上一篇:STM32-----LED
下一篇:stm32---gpio

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

STM32 Cubemax(十五) —— 串级PID以控制电机角度值为例
前言 很早前说要补的坑,今天补一下。之前介绍过单级的PID来控制电机的速度值,建议先看下面这篇文章,因为后面代码和这篇文章有关联! STM32 Cubemax(七) —— 单级PID控制带编码器的直流减速电机速度 而这次,我们来讲解一下怎么控制电机的角度,如果用单级PID控制角度会有什么问题,为什么要用串级PID。 当然串级PID不只是可以控制电机的角度,如现在诸多的控制系统,倒立摆,风力摆,平衡小车等等,都是基于串级PID的控制。 一、单级PID控制电机角度 如果还用我们之前熟知的单级PID来控制角度值,我们很容易的可以得出以下框图。 看上去很完美,没有什么问题,但这里面最大的问题就在于单片机给电机的是PWM
[单片机]
<font color='red'>STM32</font> Cubemax(十五) —— 串级PID以控制电机角度值为例
STM32——TIM2定时器定时
STM32 中一共有11 个定时器,其中2 个高级控制定时器,4 个普通定时器和2 个基本定时器,以及2 个看门狗定时器和1 个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8 个定时器。关于这8 个定时器的简要说明,如图60 所示。其中TIM1 和TIM8 是能够产生3 对PWM 互补输出的高级定时器,常用于三相电机的驱动,时钟由APB2 的输出产生。TIM2-TIM5 是普通定时器,TIM6 和TIM7是基本定时器,其时钟由APB1 输出产生。由于STM32 的TIMER 功能比较复杂,所以只能一点一点的学习。因此今天就从最简单的开始学习起,也就是TIM2-T
[单片机]
<font color='red'>STM32</font>——TIM2定时器定时
STM32移植U8g2图形库的方法 实现OLED图形显示
之前的文章,介绍过ESP8266在Arduino IDE环境中使用U8g2库,实现OLED上的各种图形显示。 本篇,介绍一下U8g2库如何移植到STM32上,进行OLED的图形显示。 本次的实验硬件为: STM32:型号为最常见的STM32F103C8T6 OLED:0.96寸OLED,IIC接口(如果是SPI接口,文中也有对应的修改介绍) 1 U8g2简介 U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。 U8g2源码的开源库地址:https://github.com/olikraus/u8g2 2 移植步骤 首先下载U8g
[单片机]
<font color='red'>STM32</font>移植U8g2图形库的方法 实现OLED图形显示
关于stm32寄存器地址定义的小结
最近一直在研读正点原子的stm32开发板,在学习SysTick寄存器的过程中查不到该寄存器的地址是在哪里定义的,很是不解。上网搜后发现 http://www.eepw.com.cn/article/246289.htm 部分代码粘贴如下: typedef struct { __IO uint32_t CTRL; /*! Offset: 0x000 (R/W) SysTick Control and Status Register */ __IO uint32_t LOAD; /*! Offset: 0x004 (R/W) SysTick Reload Value Register */ __IO uint32_
[单片机]
STM32 CubeMX 中如何查看系统时钟
代码如下: uint32_t sysclock = 0; sysclock = HAL_RCC_GetSysClockFreq(); 这样就可以在线仿真时看sysclock了,以判断单片机是否正常运行。这些函数都在rcc这个库文件里面,还可以查看时钟树上其他总线上的时钟。
[单片机]
stm32实用篇4: stm32数据类型长度
由于经常会忘记stm32的数据类型长度,测试一下: DEBUG_INFO( stm32数据类型长度 ); DEBUG_INFO( char = %d byte. , sizeof(char)); DEBUG_INFO( short = %d byte. , sizeof(short)); DEBUG_INFO( int = %d byte. , sizeof(int)); DEBUG_INFO( long = %d byte. , sizeof(long)); DEBUG_INFO( long long = %d byte. , sizeof(long long)); DEBUG_INF
[单片机]
<font color='red'>stm32</font>实用篇4: <font color='red'>stm32</font>数据类型长度
STM32用SPI方式控制OLED模块
一、OLED 1. OLED模块的外观 2. OLED模块的电路图 3. OLED模块参数 项目 说明 接口特性 3.3V(串电阻后,可与 5V 系统连接) 通信接口 4 线 SPI 屏幕分辨率 128*64 屏幕尺寸 0.96 寸 工作温度 -40℃~70℃ 颜色 纯蓝色、黄蓝双色 模块尺寸| 27mm*26mm 二、GPIO模拟SPI 1. 硬件连接 通过引脚和模块电路图可以分析出SPI的电路连接 OLED STM32 GND ---------- GND VCC ---------- 3.3V D0 ---------- PA4(CLK) D1
[单片机]
STM32 独立看门狗定时器IWDG复位
无论是什么微控制器,一般都会有看门狗模块。对于STM32来说,它具有两个看门狗:独立看门狗(IWDG)与窗口看门狗(WWDG)。这里就先讲讲独立看门狗。 看门狗能够检测和解决有软件错误引起的故障。当一个错误导致看门狗不能及时 喂狗 ,那么它就会产生一个系统复位。独立看门狗,之所以 独立 ,是因为它由专门的40kHz左右的低速时钟驱动的,及即时主时钟发生故障它也仍然有效。为它提供时钟的低速时钟LSI的频率虽然号称是40KHz,但实际上并不准确,它有MCU内部RC振荡产生,频率会会在30kHz~60kHz之间变化。所以,独立看门狗不能用来精确计时。如果想要实现准确计时,那还需要对LSI进行校准。独立看门狗最适合用于那些在一个主程序之外
[单片机]
<font color='red'>STM32</font> 独立看门狗定时器IWDG复位
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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