MSP432库函数学习笔记-GPIO

发布者:幸福之舞最新更新时间:2022-07-20 来源: csdn关键字:MSP432  库函数  GPIO 手机看文章 扫描二维码
随时随地手机看文章

1,GPIO模式设置,PxDIR寄存器

void GPIO_setAsOutputPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//设置GPIO为输出模式

 

void GPIO_setAsInputPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//设置GPIO为输入模式

可设置的GPIO口可参考库函数注释


2,GPIO复用功能配置,PxSEL寄存器

void GPIO_setAsPeripheralModuleFunctionOutputPin(uint_fast8_t selectedPort, 

uint_fast16_t selectedPins,uint_fast8_t mode);

//设置GPIO输出模式下的复用功能

 

void GPIO_setAsPeripheralModuleFunctionInputPin(uint_fast8_t selectedPort,

 uint_fast16_t selectedPins,uint_fast8_t mode);

//设置GPIO输入模式下的复用功能

 

//!        module function.

//!        Valid values are:

//!        - b GPIO_PRIMARY_MODULE_FUNCTION

//!        - b GPIO_SECONDARY_MODULE_FUNCTION

//!        - b GPIO_TERTIARY_MODULE_FUNCTION

 

不设置复用功能则为通用I/O口


设置复用功能则有三种可选模式


1,选择主模块功能(GPIO_PRIMARY_MODULE_FUNCTION)


2,选择辅助模块功能(GPIO_SECONDARY_MODULE_FUNCTION)


3,选择第三模块功能(GPIO_TERTIARY_MODULE_FUNCTION)


后两种模式需要选择输出/入模式功能设置来作为不同功能,第一种模式通常不分输入输出


此部分需参考datasheet的6.12节引脚功能配置


3,GPIO输出电平设置,PxOUT寄存器

void GPIO_setOutputHighOnPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//设置GPIO为高电平输出

 

void GPIO_setOutputLowOnPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//设置GPIO为低电平输出

 

void GPIO_toggleOutputOnPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//设置GPIO输出翻转模式,即高低电平循环出现

4,GPIO输入模式下上/下拉电阻选择,PxREN寄存器

void GPIO_setAsInputPinWithPullDownResistor(uint_fast8_t selectedPort,

                                            uint_fast16_t selectedPins);

//设置GPIO为输入下拉模式

 

 void GPIO_setAsInputPinWithPullUpResistor(uint_fast8_t selectedPort,

                                            uint_fast16_t selectedPins);

//设置GPIO为输入上拉模式

 

I/O口在悬空时收到噪声干扰可能出现不可预知的电平信号,通过上下拉电阻即可将I/O口钳制在确定的电平状态。


5,GPIO输入读取模式设置,PxIN寄存器

uint8_t GPIO_getInputPinValue(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//读取输入引脚的电平状态

读取GPIO引脚的输入电平


6,GPIO中断模块设置

1,中断使能寄存器PxIE

 

void GPIO_enableInterrupt(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//打开中断功能

 

void GPIO_disableInterrupt(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//关闭中断功能

2,获取选择I/O口上的中断状态

uint_fast16_t GPIO_getInterruptStatus(uint_fast8_t selectedPort,uint_fast16_t 

                                      selectedPins);

//获取选择I/O口上的中断状态

  只有P1,P2,PA三个端口具有此功能


3,清除选择I/O口的中断标志,PxIFG寄存器

 

void GPIO_clearInterruptFlag(uint_fast8_t selectedPort,uint_fast16_t selectedPins);

//清除选择I/O口的中断标志

 

   只有P1,P2,PA三个端口具有此功能


4,设置GPIO中断触发沿,PxIES寄存器

void GPIO_interruptEdgeSelect(uint_fast8_t selectedPort,uint_fast16_t selectedPins,  

                              uint_fast8_t edgeSelect);

//设置GPIO中断触发沿

可选择GPIO_LOW_TO_HIGH_TRANSITION即上升沿


       或GPIO_HIGH_TO_LOW_TRANSITION即下降沿


5,确保提供的GPIO已经开启中断

uint_fast16_t GPIO_getEnabledInterruptStatus(uint_fast8_t selectedPort);

//

这个我没搞太懂,希望大佬解答


6,中断回调函数

 

void GPIO_registerInterrupt(uint_fast8_t selectedPort,void (*intHandler)(void));

//绑定中断时执行的函数

 

void GPIO_unregisterInterrupt(uint_fast8_t selectedPort);

//解绑中断时执行的函数

7,GPIO驱动强度设置

void GPIO_setDriveStrengthHigh(uint_fast8_t selectedPort,uint_fast8_t selectedPins);

//设置GPIO为全驱动模式

 

void GPIO_setDriveStrengthLow(uint_fast8_t selectedPort,uint_fast8_t selectedPins);

//设置GPIO为欠驱动模式

全驱动模式可提高带载能力,最大输出电流可达20mA


可设置为全驱动模式的I/O口有P2.0~P2.3


欠驱动则为通用模式

关键字:MSP432  库函数  GPIO 引用地址:MSP432库函数学习笔记-GPIO

上一篇:MSP432P401R学习:CCS入门实验练习,使用CCS新建、导入、编译、下载工程
下一篇:MSP432库函数学习笔记-UART

推荐阅读最新更新时间:2024-11-01 11:14

51单片机(六)—— GPIO控制多路LED
本文中,我们对多路LED进行控制,硬件电路如下图所示 在《51单片机(五)—— GPIO点亮一个LED》中,已经对这个电路做了详细介绍,这里不再详述。 在这个实验中,我们采用两种方法对多路LED进行控制,实验是需要把J21接口的8个引脚与单片机的P0口的8个引脚分别连接在一起。 方法一: 实现代码如下所示 #include reg52.h //包含头文件,一般情况不需要改动, sbit LED1=P0^0; //用sbit关键字 定义LED1到P00端口, sbit LED2=P0^1; sbit LED3=P0^2; sbit LED4=P0^3; sbit LED5=P0^4; sbit LED6=P0^5
[单片机]
51单片机(六)—— <font color='red'>GPIO</font>控制多路LED
STM32的UART的GPIO管脚配置的异常问题
参照STM32的数据手册,其GPIO管脚具有8种输入输出形式: 1. 浮空输入 2. 带上拉输入 3. 带下拉输入 4. 模仿输入 5. 开漏输出 6. 推挽输出 7. 复用功用的推挽输出 8. 复用功用的开漏输出 根据具体状况进行灵敏装备。 我在运用UART的时分就呈现过装备过错的状况,我把RX管脚装备成input floating,外部没有接上拉电阻,后边接了485电平变换芯片SN65HDV10,成果本应该只接纳1个字节,但一直接纳到0x00,原因是485芯片设置成发送状况后其接纳管脚为高阻态,而STM32芯片为悬空态,实践测验该管脚为低电平,所以一直接纳到0x00,将STM32的UART接纳管脚装备为i
[单片机]
STM32学习笔记:【003】GPIO
在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output 、通用输入/输出)了,在STM32中,除了除去ADC以外的复用功能,剩下的几乎就是GPIO了。 下面给出GPIO的基本使用步骤: 初始化 1.声明一个GPIO属性结构体,设置各成员属性 这个结构体的属性是这样的: typedef struct { uint32_t Pin;   /*指定的引脚号,右值表达式可以是GPIO_PIN_0到~GPIO_PIN_15任意相或 */ uint32_t Mode;   /*     模式     GPIO_MODE_INPUT       输入模式     
[单片机]
STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关
STM32是一款低功耗的芯片,所以其外设均有一个与之对应的时钟,而在芯片刚上电的时候这些时钟是被关闭的,所以如果想要外设工作,便必须将与之对应的时钟打开。 本文介绍如何基于GPIO来通过按键控制LEN灯的开关。 (1)按键的控制 上图所示为按键的电路,在按键未被按下的时候,KEY2的输出信号为低电平(按键所在的电路不通,其与地相连);在按键按下时,KEY2的输出状态为高电平(按键所在的电路导通,其与3.3V的电源相连)。因此,通过对引脚的电平进行检测便可以判断按键是否按下。 按键的机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳点接通或断开,其会产生如下图所示的带波纹信号,需要使用软
[单片机]
飞思卡尔16位单片机(四)——GPIO输入功能测试
一、介绍 在这篇文章中,我们以按键作为输入器件对飞思卡尔XEP100单片机的GPIO的输入功能进行测试。对应的硬件电路如下图所示。 当按键未按下时,由于有上拉电阻R39~R312的作用,单片机检测到的电平为高电平;当按键按下时,单片机引脚与地短接,单片机检测到引脚为低电平。 当按键按下时,按键输出端的原始电平如下图所示: 由图中可以看出,在按键按下和松开时,按键的电平信号存在波动,一般为10~15ms,这样有可能导致误判。为了消除抖动,可行的方法有:硬件去抖和软件去抖两种方法。本文的电路上使用的方法为硬件去抖,即在按键的两端加了一个去抖电容。软件去抖的方法是在检测到按键按下后,延时10~
[单片机]
飞思卡尔16位单片机(四)——<font color='red'>GPIO</font>输入功能测试
STM32的GPIO有几种输出模式及其说明
GPIO的基本结构 第一:开漏输出模式(N-MOS打开,高电平时,IO端口电平取决于外部的上拉电阻;低电平时,IO端口为底) 在图的上半部,施密特触发器处于开启状态,这意味着CPU可以在“输入数据寄存器”的另一端,随时监控I/O端口的状态;通过这个特性,还实现了虚拟的I/O端口双向通信:只要CPU输出逻辑“1”,由于编号3的N-MOS管处于关闭状态,I/O端口的电平将完全由外部电路决定,因此,CPU可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1”。 当CPU在左边的编号1端通过位设置/清除寄存器,或输出数据寄存器写入数据后,该数据位将通过编号2的输出控制电
[单片机]
STM32的<font color='red'>GPIO</font>有几种输出模式及其说明
关于STM32单片机GPIO口上拉与下拉输入
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。 于是去看一下GPIO的结构图: I/O引脚结构图 由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1. 将按键电路与I/O引脚结构图连起来看,就清晰多了,
[单片机]
关于STM32单片机<font color='red'>GPIO</font>口上拉与下拉输入
STM32-GPIO口设为外部中断时,中断函数名称
以A口为例,A0~A4中断函数名称为: void EXTI0_IRQHandler(void ); void EXTI1_IRQHandler(void ); void EXTI2_IRQHandler(void ); void EXTI3_IRQHandler(void ); A5~A9: void EXTI9_5_IRQHandler(void ); A10~A15: void EXTI15_10_IRQHandler(void );
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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