TM4C123库函数学习(4)--- 按键输入

这篇具有很好参考价值的文章主要介绍了TM4C123库函数学习(4)--- 按键输入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

(1)本文主要介绍按键输入,因为开发板上没有硬件消抖,而如果按照常规的延时20ms再去while阻塞方式当然显得有些愚蠢。因为20ms对于CPU是一个漫长的过程,然后再去一个whiile阻塞等待。接下来我将介绍本人结合与多位大佬交流想出来的一种按键消抖方案。
(2)注意,学习本文之前,需要先学习滴答定时器那一章节。

函数介绍

ROM_GPIOPadConfigSet()

为指定的 PIN 设置 PAD 配置。

/****** 函数声明 ******/
//这个存放在ROM
void ROM_GPIOPadConfigSet(uint32_t ui32Port,uint8_t ui8Pins,uint32_t ui32Strength,uint32_t ui32PinType);
//这个是存放在flash
void GPIOPadConfigSet(uint32_t ui32Port,uint8_t ui8Pins,uint32_t ui32Strength,uint32_t ui32PinType);

/****** 函数介绍 ******/
/* 作用 : 为指定的 PIN 设置 PAD 配置。
 * 传入参数 : 
     * ui32Port : GPIO口的基地地址,GPIO_PORTx_BASE,x可为A,B,C,D,E,F,G,H
     * ui8Pins : GPIO_PIN_X,x可为1,2,3,4,5,6,7
     * ui32Strength : 设置引脚驱动强度,与输入无关
                      GPIO_STRENGTH_2MA,(驱动强度为2mA)
                      GPIO_STRENGTH_4MA,(驱动强度为4mA)
                      GPIO_STRENGTH_8MA,(驱动强度为8mA)
                      GPIO_STRENGTH_8MA_SC,(指定 8 mA 输出驱动器并具有旋转控制)
                      GPIO_STRENGTH_6MA,(驱动强度为6mA)
                      GPIO_STRENGTH_10MA,(驱动强度为10mA)
                      GPIO_STRENGTH_12MA,(驱动强度为12mA)
     * ui32PinType : 用于设置上下拉,休眠唤醒,开漏模式等
                      GPIO_PIN_TYPE_STD,(推挽引脚,如果是设置为输入,那么就是浮空输入)
                      GPIO_PIN_TYPE_STD_WPU,(弱上拉引脚)
                      GPIO_PIN_TYPE_STD_WPD,(弱下拉引脚)
                      GPIO_PIN_TYPE_OD,(开漏引脚)
                      GPIO_PIN_TYPE_ANALOG,(指定模拟输入)
                      GPIO_PIN_TYPE_WAKE_HIGH,(用作休眠唤醒源的引脚,高)
                      GPIO_PIN_TYPE_WAKE_LOW,(用作休眠唤醒源的引脚,低)
 * 返回参数 : 无
*/

ROM_GPIODirModeSet()

(1)设置指定引脚的方向和模式。
(2)引脚有三种模式,可以设置为软件控件或者是硬件控件。
(3)软件控件就是配置输入输出,这个很好理解。硬件控件是什么玩意呢?
在硬件控制模式下,GPIO管脚的输入和输出状态由外部设备控制,而不是由微控制器控制。这种模式通常用于外部设备需要控制或读取GPIO管脚状态的情况,例如与其他外部器件进行通信或数据采集。
(4)这个硬件控件与我们无关,我不进行过多讲解

/****** 函数声明 ******/
//这个存放在ROM
void ROM_GPIODirModeSet(uint32_t ui32Port,uint8_t ui8Pins,uint32_t ui32PinIO);
//这个是存放在flash
void GPIODirModeSet(uint32_t ui32Port,uint8_t ui8Pins,uint32_t ui32PinIO);

/****** 函数介绍 ******/
/* 作用 : 设置指定引脚的方向和模式。
 * 传入参数 : 
     * ui32Port : GPIO口的基地地址,GPIO_PORTx_BASE,x可为A,B,C,D,E,F,G,H
     * ui8Pins : GPIO_PIN_X,x可为1,2,3,4,5,6,7
     * ui32PinIO : GPIO_DIR_MODE_IN(设置为输入),
                    GPIO_DIR_MODE_OUT(设置为输出),
                    GPIO_DIR_MODE_HW(硬件控制)
 * 返回参数 : 无
*/

ROM_GPIOPinTypeGPIOInput()

(1)将引脚设置为输入。
(2)这个函数的底层是使用的GPIOPadConfigSet()和 GPIODirModeSet()实现的,如果要详细设置 GPIO 的状态(输出电流,上下拉模式),需要调用这两个函数详细设置,默认是不上下拉
(3)如果用于输入,个人不建议直接调用ROM_GPIOPinTypeGPIOInput()函数,因为如果没有外接电路的上下拉,浮空输入会导致程序是未知的。
(4)以下为

void
GPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins)
{
    //
    // Check the arguments.
    //
    ASSERT(_GPIOBaseValid(ui32Port));

    //
    // Set the pad(s) for standard push-pull operation.
    //
    GPIOPadConfigSet(ui32Port, ui8Pins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);

    //
    // Make the pin(s) be outputs.
    //
    GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_OUT);
}

ROM_GPIOPinRead()

读取引脚电平文章来源地址https://www.toymoban.com/news/detail-676014.html

/****** 函数声明 ******/
//这个存放在ROM
int32_t ROM_GPIOPinRead(uint32_t ui32Port,uint8_t ui8Pins);
//这个是存放在flash
int32_t GPIOPinRead(uint32_t ui32Port,uint8_t ui8Pins);

/****** 函数介绍 ******/
/* 作用 : 读取引脚电平
 * 传入参数 : 
     * ui32Port : GPIO口的基地地址,GPIO_PORTx_BASE,x可为A,B,C,D,E,F,G,H
     * ui8Pins : GPIO_PIN_X,x可为1,2,3,4,5,6,7
 * 返回参数 : 无
*/

到了这里,关于TM4C123库函数学习(4)--- 按键输入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TM4C123系列(五)————timer定时器(timer模式)

    一.实验简介 通过定时器的timer模式来计时实现以1s为间隔将LED翻转。 二.板载定时器介绍 TM4C有两种定时器,一种为16/32bit的,一种是32/64bit的,两种定时器各有六个,对于每个定时器来说,它可以单独以较大的bit位作为一个定时器工作,也可以拆分为两个较小的bit位的定时器

    2024年02月15日
    浏览(40)
  • 物联网|按键实验---学习I/O的输入及中断的编程|函数说明的格式|如何使用CMSIS的延时|读取通过外部中断实现按键捕获代码的实现及分析-学习笔记(14)

    1 代码的流程分析 2 代码的实现 库函数HAL_Init(void)分析: HAL_Delay()系统延时的步骤: 它的实现步骤如下: 1.用变量获得系统时钟源计数器的值 2.获得要延迟时间的参数值 3.比较两者大小,若时钟计数器的值大于要实现延迟的值,就会困在循环里;反之,跳出循环,延时完成。

    2024年02月14日
    浏览(49)
  • 基于STC15单片机的智能密码锁(矩阵按键输入)设计

    目录 一、项目背景 二、功能需求  三、功能组成 四、总结         智能门锁是一种基于现代智能化技术,与传统门锁进行比较的创新型的电子门锁产品。传统门锁通常采用钥匙旋转来开启门锁,但传统门锁存在钥匙遗失、易被复制等问题,特别是具有主动性质的人员如

    2024年02月03日
    浏览(44)
  • 蓝桥杯单片机比赛矩阵按键模块(原理函数代码详解)

    原件介绍 矩阵按键是由16个独立按键组成的,所以它的工作原理与独立按键相同。 独立按键的工作原理就是将 按键的信号转换成电脑可以理解的信号,并且传输给处理器 。 独立按键的内部结构是一个弹性贴片,在按下松手时会有抖动,抖动的时间大概有20ms,如果不进行处

    2024年02月07日
    浏览(37)
  • 蓝桥杯单片机学习4——独立按键&矩阵按键

    上期学习了数码管的静态显示,这次我们来学习独立按键矩阵按键 原理很简单,当作为独立按键使用时, 跳线帽的23接在一起 ,此时按键如果按下,则按键连接的IO口电平会被拉低,通过捕获IO的电平变化,就可以判断按键是否按下。 什么是按键消抖?按键为什么会有抖动?

    2023年04月15日
    浏览(65)
  • 蓝桥杯单片机比赛学习:3、独立按键与矩阵按键的基本原理

    首先我们看一下按键的原理图,如图1,当J5中的2,3接在一起的时候,红线标注就是一个完整的电路图,此时只有s4、s5、s6、s7按键可以使用,也就是独立按键。例如:当我们按下s4时, 电路导通,P33引脚被拉为低电平0 ,此时我们读取P33引脚电平的高低就能判断出哪个按键被按

    2024年02月06日
    浏览(48)
  • 按键输入实验--GPIO做输入-学习笔记

    按键输入实验 1.首先,按键实验是GPIO口的另一应用,上一次的跑马灯实验是将GPIO口作为输出,此次按键实验是将GPIO口作为输入。 2.GPIO作为输入时和输入的不同: (1)首先,上拉电阻是为了保证在没有信号输入的时候,IO口保持高电平,若按键为低电平有效,则没有信号的

    2024年02月09日
    浏览(43)
  • 51单片机——矩阵按键实验,小白讲解,相互学习

    矩阵按键介绍:         独立按键与单片机连接时,每一个按键都需要单片机的一个I/O 口,若某单片机系统需较多按键,如果用独立按键便会占用过多的I/O 口资源.单片机系统中I/O 口资源往往比较宝贵,当用到多个按键时为了减少I/O 口引脚,引入了矩阵按键。       

    2024年02月12日
    浏览(46)
  • 【51单片机】LED与独立按键(学习笔记)

    LED:发光二极管 补:电阻读数 102 = 10 00 = 1k 473 = 47 000 1、新建工程:Project = New Project Ctrl + Shift + N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx提示?选否 4、Source Group = 右键 = Add New Item … = C文件\\\"main.c\\\" 5、设置勾选创建HEX File文件 6、编译 CPU通过对寄存器的控制,寄存器通过驱

    2024年02月06日
    浏览(44)
  • 51单片机——独立按键实验,小白讲解,相互学习

    按键介绍:         按键是一种电子开关,使用时轻轻按开关按钮就可式开关接通,当松手时,开关断开。开发板上使用的按键及内部简易图如下图:         按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态,如果按键按下,初始导通状态变为断

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包