STM32 按键扫描方式 使用ST3.0.0库

发布者:InspiredDreamer最新更新时间:2016-10-05 来源: eefocus关键字:STM32  按键扫描方式 手机看文章 扫描二维码
随时随地手机看文章
用到GPIO的操作模式

========================================================================================

GPIO置1操作:

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

例如:

GPIO_SetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); 

这个函数是对一组端口的一些位置1,对PC3 PC4 PC53个引脚一起置1。GPIO_SetBits的作用是对一个端口16个引脚一起赋值。

例如:端口 GPIOC端口,对所有的引脚都置1,可以

GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2  ... GPIO_Pin_15);把所有引脚都置1.

========================================================================================

GPIO清零操作:

  void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

例如:

GPIO_ResetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5); 

对一个端口的几个引脚清零。PC3 PC4 PC5清零引脚。

=======================================================================================

当引脚为输入模式时读引脚的电平值,是高电平还是低电平

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

例如:

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0) == 1)

{}

检查输入引脚PB0引脚是0还是1

=======================================================================================

当引脚为输出状态时,读引脚的输出寄存器值,

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

例如:

(BitAction)((1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_3)

看当前时刻PC3是输出0还是输出1。

============================================================================================

对某一位操作,可以写0也可以写1,既可以置1也可以清0

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)

例如:

GPIO_WriteBit(GPIOC, GPIO_Pin_3, Bit_SET);//PC3置1

GPIO_WriteBit(GPIOC, GPIO_Pin_3, Bit_RESET);//PC3清0

==============================================================================================

对端口直接赋值

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)

例如:

可以直接对PC0赋值为1,其他引脚都为0。

GPIO_Write(GPIOC, 0x01);//PC0=1,其他引脚为0

关键字:STM32  按键扫描方式 引用地址:STM32 按键扫描方式 使用ST3.0.0库

上一篇:STM32 按键EXTI方式 使用ST3.0.0库
下一篇:STM32 GPIO使用步骤 ST3.0.0库

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

关于STM32启动文件的几个小问题
基于STM32芯片的工程代码里有个很重要的文件,即启动文件。该文件主要由汇编语言写成,文件名冠以.s结尾,它是芯片程序运行首先要执行的一个文件。其功能及作用简单点说就是做执行用户程序前的基本准备,比方执行复位程序初始化栈、堆,做时钟系统的默认配置、中断矢量表的定义与分配等。 网络上有些文章对该文件做了不错的整体性介绍,这里仅就该文件中的几个小问题一起交流分享下。【注:下面用到的工程是基于STM32F429的,使用IDE为ARM MDK】 怎么在编译后的MAP文件里看不到变量__heap_base? 有人发现在启动文件里明明有定义__initial_sp和__heap_base,可在MAP文件里只看到__initial_sp的地
[单片机]
stm32时钟分割
(1) TIM_Perscaler来设置预分频系数; (2) TIM_ClockDivision来设置时钟分割(时钟分频因子); (3) TIM_CounterMode来设置计数器模式; 时钟分割定义的是在定时器时钟频率 (CK_INT)与数字滤波器 (ETR,TIx)使用的采样频率之间的分频比例。 TIM_ClockDivision的参数如下表: TIM_ClockDivision 描述 二进制值 TIM_CKD_DIV1 tDTS = Tck_tim 0x00 TIM_CKD_DIV2 tDTS = 2 * Tck_tim 0x01 TIM_CKD_DIV4 tDTS = 4
[单片机]
STM32电机方波】记录2——NVIC中断基本设置
NVIC概念:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器”。简单来说,就是MCU提供、处理内部中断的模块。 NVIC库函数: 中断优先级: 在配置NVIC之前得弄懂一个概念:中断优先级,即中断的执行顺序。中断优先级中,分为抢占式优先级(先占优先级)和响应优先级(从优先级)。抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断嵌套。响应优先级则只能排队,不能抢在前面插别人的对,即不能嵌被嵌套。 STM32中指定优先级的寄存器为4位,其定义如下: 第0组:所有4位用于指定响应优先级 NVIC_PriorityGroup_0 = 选择第0组 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
[单片机]
【<font color='red'>STM32</font>电机方波】记录2——NVIC中断基本设置
再造STM32---第四部分:新建工程---寄存器版
4.1 新建工程: 4.1.1 新建本地工程文件夹: 为了工程目录更加清晰,我们在本地电脑上新建 1 个文件夹用于存放整个工程,如命名为“LED”,然后在该目录下新建 2 个文件夹,具体如下: 表格 8 工程目录文件夹清单 表格 9 工程目录文件夹内容清单 4.1.2 新建工程: 打开 KEIL5,新建一个工程,工程名根据喜好命名,我这里取 LED-REG,直接保存在 LED 文件夹下。 1. 选择 CPU 型号: 这个根据你开发板使用的 CPU 具体的型号来选择, 我的F429选STM32F429IGT 型号。如果这里没有出现你想要的 CPU 型号,或者一个型号都没有,那么肯定是你的 KE
[单片机]
再造STM32---第四部分:新建工程---寄存器版
使用变参函数实现STM32串口的简易printf功能
第一,去掉了原来使用的goto语句,因为C语言中除了错误处理之外,不建议使用goto语句; 第二,fmt和pnt的含义更加明确,它们始终指向下一个需要处理的字符和变参; 第三,整理了程序结构,使它更加清晰。 void uart_printf(USART_TypeDef *USARTx, char *fmt, ...) { char *pnt = (char *)&fmt + sizeof(fmt); int len; while (*fmt != '') { if (*fmt == '%') { if (*(fmt + 1) == 'c') { uart_send_byte(
[单片机]
STM32的标准库编译成lib使用
以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。 于是,我有了将库编译成lib文件的想法。本文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。 适用对象: 1. 熟悉库,不想再看库里边代码 2. 有稳定的库,库文件更新不频繁 3. 库文件多,每次编译时间长 下面是我将STM32F4的标准库编译成lib并在工程中使用的过程: 1、建立创建lib的工程 2、将库文件拷贝到工程目录: 将库里边目录STM32F4xx_S
[单片机]
将<font color='red'>STM32</font>的标准库编译成lib使用
STM32 可编程电压监测器(PVD)
STM32内部自带PVD功能,用于对MCU供电电压VDD进行监控。通过电源控制寄存器中的PLS 位可以用来设定监控电压的阀值,通过对外部电压进行比较来监控电源。当条件触发,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。 操作流程: 1)、系统启动后启动PVD,并开启相应的中断。 PWR_PVDLevelConfig(PWR_PVDLevel_2V8); // 设定监控阀值 PWR_PVDCmd(ENABLE); // 使能PVD EXTI_StructInit(&EXTI_InitStructure); EXTI_InitStructure.EXTI_
[单片机]
基于STM32物联网开发板(4)--LCD屏
1.概述 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW; 超大可视角度:大于160°(显示屏中可视角度最大的一种屏幕); 宽电压供电(3V~5V),兼容3.3V和5V电平逻辑,无需电平转换芯片; 采用7线制SPI接口; 工作温度范围为工业级(-20℃~60℃); 军工级工艺标准,长期稳定工作; 硬件接口: 引脚 说明 LEDK PB0背光 CS PA4片选 SCL PA5时钟 SDA PA7主机输出 RES PB1复位脚(电平复位) D/C PC4数据命令选择脚 2.通讯协议 ST7789VW是一款用于262K彩色图形型TFT-LCD的单片
[单片机]
基于<font color='red'>STM32</font>物联网开发板(4)--LCD屏
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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