当前位置: 首页 > news >正文

[MSPM0开发]MSPM0G3507之GPIO输入、输出、中断使用(基于driverlib库)

[MSPM0开发]之六MSPM0G3507的GPIO输入、输出、中断使用

  • 一、MSPM0G3507 GPIO外设概述
  • 二、 MSPM0G3507 GPIO结构框图
  • 三、driverLib库例程
  • 四、操作示例
    • 4.1 输出控制库函数操作
    • 4.2 输入查询方式操作
    • 4.3 输入中断方式操作

一、MSPM0G3507 GPIO外设概述

GPIO提供了一种通过芯片引脚读写数字信号(0/1即低电平/高电平)的方法
同时还提供了一种芯片在低功耗模式时用于唤醒芯片的方法
GPIO 模块的特性包括:
• 从 CPU 访问 MMR 的零等待状态
• 无需在软件中使用“读取、修改、写入”结构, 即可设置/清零/切换多个位
• 无需在软件中使用“读取、修改、写入”结构, 即可直接写入到各个 GPIO 输出位 (DOUT)
• 无需在软件中使用屏蔽, 即可直接读取各个 GPIO 输入位 (DIN) 的比较结果
DOUT 可供 DMA 用于在指定引脚上生成预定义的输出序列
快速唤醒功能支持通过任意 GPIO 端口从 STOP 和 STANDBY 模式进行低功耗唤醒
• 用户控制的输入滤波( 可按 IO 配置)
• 通过事件发布者事件订阅者与设备事件结构互连( 仅限 GPIOA 实例

二、 MSPM0G3507 GPIO结构框图

结构框图

三、driverLib库例程

例程

四、操作示例

硬件原理图
按键
LED
配置使用内部高速时钟,MCLK=32MHZ

序号输入/输出引脚功能
1输出PB22LED
2输入PB21BUTTON1
3输入PB20BUTTON2

4.1 输出控制库函数操作

sysconfig配置:
时钟2
时钟
GPIO配置:
配置
按键1

测试代码:

int main(void) {SYSCFG_DL_init();systick_init(32000); // systick从sysconfig中分离,使用自定义函数实现其初始化、计数、延时等操作。 可以参考此链接:[https://blog.csdn.net/wo4fisher/article/details/147166352?spm=1011.2415.3001.5331](https://blog.csdn.net/wo4fisher/article/details/147166352?spm=1011.2415.3001.5331)DL_GPIO_setPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));DL_GPIO_clearPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));DL_GPIO_setPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));DL_GPIO_clearPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));for (int i = 0; i < 5; i++) {DL_GPIO_togglePins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((1000));}while (1) {}
}

4.2 输入查询方式操作

在4.1基础上添加轮训检测按键代码,检测到按键按下后,LED翻转:

int main(void) {SYSCFG_DL_init();systick_init(32000);DL_GPIO_setPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));DL_GPIO_clearPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));DL_GPIO_setPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));DL_GPIO_clearPins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((2000));for (int i = 0; i < 5; i++) {DL_GPIO_togglePins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);delay_ms((1000));}while (1) {if (!DL_GPIO_readPins(GPIO_GRP_SW_PORT, GPIO_GRP_SW_PIN_SW1_PIN)) {DL_GPIO_togglePins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);while (!DL_GPIO_readPins(GPIO_GRP_SW_PORT, GPIO_GRP_SW_PIN_SW1_PIN));}}
}

4.3 输入中断方式操作

这里按键用外接按键,连接到PB20.
通过查询手册"cpu和中断",可知,gpio外设中断属于INT_GROUP1中断,其中断服务函数通过查询例程gpio_input_capture得到。
GPIO中断
sysconfig

引脚配置为输入中断过程如下:

//仅保留输入中断引脚部分
SYSCONFIG_WEAK void SYSCFG_DL_GPIO_init(void)
{DL_GPIO_initDigitalInputFeatures(GPIO_GRP_SW_PIN_SW2_IOMUX,DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_NONE,DL_GPIO_HYSTERESIS_DISABLE, DL_GPIO_WAKEUP_DISABLE);DL_GPIO_setUpperPinsPolarity(GPIOB, DL_GPIO_PIN_21_EDGE_FALL |DL_GPIO_PIN_20_EDGE_FALL);DL_GPIO_clearInterruptStatus(GPIOB, GPIO_GRP_SW_PIN_SW1_PIN |GPIO_GRP_SW_PIN_SW2_PIN);DL_GPIO_enableInterrupt(GPIOB, GPIO_GRP_SW_PIN_SW1_PIN |GPIO_GRP_SW_PIN_SW2_PIN);}

在main.c中硬件初始化完成后,开启gpio输入中断

NVIC_EnableIRQ(GPIO_GRP_SW_INT_IRQN);

编写输入中断服务函数:
通过上文中的表格,GROUP1_IRQ是一组中断请求事件的共用中断服务函数入口,因此,进入中断后,要进一步判断是哪一个中断源,如果是GPIO,如果有多个GPIO中断,还要进一步判断对应引脚状态。

void GROUP1_IRQHandler(void) {switch (DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1)) {case GPIO_GRP_SW_INT_IIDX:DL_GPIO_togglePins(GPIO_GRP_LED_PORT, GPIO_GRP_LED_PIN_LED_PIN);break;}
}
http://www.xdnf.cn/news/1011097.html

相关文章:

  • firebase异常捕获
  • ssc377d系统裁剪(16M nor flash)
  • 非标定制超声波清洗设备的核心技术解析与应用
  • RAID 阵列有哪些?分别有什么作用?
  • 【读代码】RAG文档解析工具Marker
  • 日语单词总结
  • Flink 系列之二十九- Flink SQL - 中间算子:窗口聚合
  • Ubuntu安装RTX5090显卡驱动
  • Java开发中常见的语法陷阱与规避方法
  • ThreadPoolTaskExecutor+CompletableFuture实现多线程异步数据同步和自定义线程池监控和动态调整实现
  • 网络原理9-HTTP2
  • 三轴云台之运动控制系统篇
  • C++ 语言基础之数据类型详解
  • LangGraph入门教程:构建循环状态管理的LLM应用
  • 哪些方面可以做PCDN
  • Memory Repair (五)
  • SMB协议在Windows内网中的核心地位
  • Java SE - 继承与多态
  • 广东省省考备考(第二十七天6.12)—言语:逻辑填空(练习)
  • Sentinel 流量控制安装与使用
  • 【游戏设计】游戏视角类型及核心特点分析
  • 脑电震动音频震动信号模拟器设计资料:758-2路32bit DA 脑电震动音频信号模拟器
  • 单连杆倾角估计:互补滤波器的 MATLAB 仿真实现
  • 【Python打卡Day35】模型可视化与推理@浙大疏锦行
  • bindService 和 startService 生命周期对比
  • JavaWeb期末速成 Servlet
  • qemu-guest-agent详解
  • 亚马逊woot常见问题第三弹
  • LevelDB介绍和内部机制
  • CC工具箱使用指南:【面要素四至】