0
点赞
收藏
分享

微信扫一扫

MSP432-GPIO函数库

RockYoungTalk 2022-05-02 阅读 61

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输出翻转模式,即高低电平循环出现

3,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口钳制在确定的电平状态。

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

uint8_t GPIO_getInputPinValue(uint_fast8_t selectedPort,uint_fast16_t selectedPins);
//读取输入引脚的电平状态

读取GPIO引脚的输入电平

4,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);
//解绑中断时执行的函数

5,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

欠驱动则为普通模式

暂时先这么多了

举报

相关推荐

0 条评论