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

MSPM0G3507 ——GPIO例程讲解2——simultaneous_interrupts

主函数:


#include "ti_msp_dl_config.h"int main(void)
{SYSCFG_DL_init();/* Enable Interrupt for both GPIOA and GPIOB ports */NVIC_EnableIRQ(GPIO_SWITCHES_GPIOA_INT_IRQN);                   //启用SWITCHES——A的中断  NVIC_EnableIRQ(GPIO_SWITCHES_GPIOB_INT_IRQN);                   //启用SWITCHES——B的中断  while (1) {__WFI();}
}void GROUP1_IRQHandler(void)
{/** Get the pending interrupt for the GPIOA port and store for* comparisons later                //获取GPIOA端口的挂起中断,并存储以供稍后进行比较*/uint32_t gpioA = DL_GPIO_getEnabledInterruptStatus(GPIOA,GPIO_SWITCHES_USER_SWITCH_1_PIN | GPIO_SWITCHES_USER_SWITCH_3_PIN);   //获取已经启用的中断状态(这里是1和3的中断)/** Bitwise AND the pending interrupt with the pin you want to check,* then check if it is equal to the pins. Clear the interrupt status.*/             //将挂起的中断与要检查的引脚逐位AND,然后检查它是否等于引脚。清除中断状态。//类似于32中得到中断标志位,再判断中断标志位是谁的if ((gpioA & GPIO_SWITCHES_USER_SWITCH_1_PIN) ==GPIO_SWITCHES_USER_SWITCH_1_PIN) //如果成立,则是该中断{DL_GPIO_togglePins(GPIO_LEDS_USER_LED_1_PORT, GPIO_LEDS_USER_LED_1_PIN);DL_GPIO_clearInterruptStatus(GPIOA, GPIO_SWITCHES_USER_SWITCH_1_PIN);}if ((gpioA & GPIO_SWITCHES_USER_SWITCH_3_PIN) == GPIO_SWITCHES_USER_SWITCH_3_PIN) {DL_GPIO_togglePins(GPIO_LEDS_USER_LED_3_PORT, GPIO_LEDS_USER_LED_3_PIN);DL_GPIO_clearInterruptStatus(GPIOA, GPIO_SWITCHES_USER_SWITCH_3_PIN);}/* Repeat with GPIOB Port */uint32_t gpioB = DL_GPIO_getEnabledInterruptStatus( GPIOB, GPIO_SWITCHES_USER_SWITCH_2_PIN);if ((gpioB & GPIO_SWITCHES_USER_SWITCH_2_PIN) ==  GPIO_SWITCHES_USER_SWITCH_2_PIN){DL_GPIO_togglePins(GPIO_LEDS_USER_LED_2_PORT, GPIO_LEDS_USER_LED_2_PIN);DL_GPIO_clearInterruptStatus(GPIOB, GPIO_SWITCHES_USER_SWITCH_2_PIN);}
}

宏定义函数:


#ifndef ti_msp_dl_config_h
#define ti_msp_dl_config_h#define CONFIG_MSPM0G350X#if defined(__ti_version__) || defined(__TI_COMPILER_VERSION__)
#define SYSCONFIG_WEAK __attribute__((weak))
#elif defined(__IAR_SYSTEMS_ICC__)
#define SYSCONFIG_WEAK __weak
#elif defined(__GNUC__)
#define SYSCONFIG_WEAK __attribute__((weak))
#endif#include <ti/devices/msp/msp.h>
#include <ti/driverlib/driverlib.h>
#include <ti/driverlib/m0p/dl_core.h>#ifdef __cplusplus
extern "C" {
#endif/**  ======== SYSCFG_DL_init ========*  Perform all required MSP DL initialization**  This function should be called once at a point before any use of*  MSP DL.*//* clang-format off */#define POWER_STARTUP_DELAY                                                (16)#define CPUCLK_FREQ                                                     32000000/* Defines for USER_LED_1: GPIOA.0 with pinCMx 1 on package pin 33 */
#define GPIO_LEDS_USER_LED_1_PORT                                        (GPIOA)
#define GPIO_LEDS_USER_LED_1_PIN                                 (DL_GPIO_PIN_0)
#define GPIO_LEDS_USER_LED_1_IOMUX                                (IOMUX_PINCM1)
/* Defines for USER_LED_2: GPIOB.27 with pinCMx 58 on package pin 29 */
#define GPIO_LEDS_USER_LED_2_PORT                                        (GPIOB)
#define GPIO_LEDS_USER_LED_2_PIN                                (DL_GPIO_PIN_27)
#define GPIO_LEDS_USER_LED_2_IOMUX                               (IOMUX_PINCM58)
/* Defines for USER_LED_3: GPIOB.26 with pinCMx 57 on package pin 28 */
#define GPIO_LEDS_USER_LED_3_PORT                                        (GPIOB)
#define GPIO_LEDS_USER_LED_3_PIN                                (DL_GPIO_PIN_26)
#define GPIO_LEDS_USER_LED_3_IOMUX                               (IOMUX_PINCM57)
/* Defines for USER_SWITCH_1: GPIOA.12 with pinCMx 34 on package pin 5 */
#define GPIO_SWITCHES_USER_SWITCH_1_PORT                                 (GPIOA)
// pins affected by this interrupt request:["USER_SWITCH_1","USER_SWITCH_3"]
#define GPIO_SWITCHES_GPIOA_INT_IRQN                            (GPIOA_INT_IRQn)
#define GPIO_SWITCHES_GPIOA_INT_IIDX            (DL_INTERRUPT_GROUP1_IIDX_GPIOA)
#define GPIO_SWITCHES_USER_SWITCH_1_IIDX                    (DL_GPIO_IIDX_DIO12)
#define GPIO_SWITCHES_USER_SWITCH_1_PIN                         (DL_GPIO_PIN_12)
#define GPIO_SWITCHES_USER_SWITCH_1_IOMUX                        (IOMUX_PINCM34)
/* Defines for USER_SWITCH_2: GPIOB.12 with pinCMx 29 on package pin 64 */
#define GPIO_SWITCHES_USER_SWITCH_2_PORT                                 (GPIOB)
// pins affected by this interrupt request:["USER_SWITCH_2"]
#define GPIO_SWITCHES_GPIOB_INT_IRQN                            (GPIOB_INT_IRQn)
#define GPIO_SWITCHES_GPIOB_INT_IIDX            (DL_INTERRUPT_GROUP1_IIDX_GPIOB)
#define GPIO_SWITCHES_USER_SWITCH_2_IIDX                    (DL_GPIO_IIDX_DIO12)
#define GPIO_SWITCHES_USER_SWITCH_2_PIN                         (DL_GPIO_PIN_12)
#define GPIO_SWITCHES_USER_SWITCH_2_IOMUX                        (IOMUX_PINCM29)
/* Defines for USER_SWITCH_3: GPIOA.13 with pinCMx 35 on package pin 6 */
#define GPIO_SWITCHES_USER_SWITCH_3_PORT                                 (GPIOA)
#define GPIO_SWITCHES_USER_SWITCH_3_IIDX                    (DL_GPIO_IIDX_DIO13)
#define GPIO_SWITCHES_USER_SWITCH_3_PIN                         (DL_GPIO_PIN_13)
#define GPIO_SWITCHES_USER_SWITCH_3_IOMUX                        (IOMUX_PINCM35)/* clang-format on */void SYSCFG_DL_init(void);
void SYSCFG_DL_initPower(void);
void SYSCFG_DL_GPIO_init(void);
void SYSCFG_DL_SYSCTL_init(void);#ifdef __cplusplus
}
#endif#endif /* ti_msp_dl_config_h */

主函数中使用了该函数:

DL_GPIO_getEnabledInterruptStatus 

用法,参数,返回值如下:

 

相关文章:

MSPM0G3507 ——GPIO例程讲解2——simultaneous_interrupts

主函数&#xff1a; #include "ti_msp_dl_config.h"int main(void) {SYSCFG_DL_init();/* Enable Interrupt for both GPIOA and GPIOB ports */NVIC_EnableIRQ(GPIO_SWITCHES_GPIOA_INT_IRQN); //启用SWITCHES——A的中断 NVIC_EnableIRQ(GPIO_S…...

某程序员:30岁了,老婆管钱,背着我买了50万股票,亏了20w,强制她清仓后又买了36万

“辛辛苦苦攒了几年钱&#xff0c;本想买房买车&#xff0c;结果全被老婆炒股亏掉了&#xff01;” 近日&#xff0c;一位30岁的程序员大哥在网上吐苦水&#xff0c;引发了网友们的热议。 这位程序员大哥和妻子结婚后&#xff0c;一直秉持着“男主外&#xff0c;女主内”的传统…...

Docker常见面试题整理

文章目录 1. Docker 是什么&#xff1f;它解决了什么问题&#xff1f;2. Docker 和虚拟机&#xff08;VM&#xff09;的区别是什么&#xff1f;3、Docker三个核心概念4、如何构建一个 Docker 镜像&#xff1f;5、如何将一个 Docker 容器连接到多个网络&#xff1f;6、Docker Co…...

35 - 最后一个能进入巴士的人(高频 SQL 50 题基础版)

35 - 最后一个能进入巴士的人 -- sum(weight) over(order by turn) as total,根据turn升序&#xff0c;再求前面数的和 selectperson_name from(selectperson_name,sum(weight) over(order by turn) as totalfromQueue) new_Queue wheretotal<1000 order by total desc lim…...

WPF将dll文件嵌入到exe文件中

WPF将dll文件嵌入到exe文件中 第一步&#xff1a;打开.csproj文件&#xff0c;在Import节点后添加如下代码&#xff1a; <Target Name"AfterResolveReferences"><ItemGroup><EmbeddedResource Include"(ReferenceCopyLocalPaths)" Condit…...

2024年AI+游戏赛道的公司和工具归类总结

随着人工智能技术的飞速发展,AI在游戏开发领域的应用越来越广泛。以下是对2024年AI+游戏赛道的公司和工具的归类总结,涵盖了从角色和场景设计到音频制作,再到动作捕捉和动画生成等多个方面。 2D与3D创作 2D创作工具:专注于角色和场景的平面设计,提供AI辅助的图案生成和风…...

svm和决策树基本知识以及模型评价以及模型保存

svm和决策树基本知识以及模型评价以及模型保存 文章目录 一、SVM1.1&#xff0c;常用属性函数 二、决策树2.1&#xff0c;常用属性函数2.2&#xff0c;决策树可视化2.3&#xff0c;决策树解释 3&#xff0c;模型评价3.1&#xff0c;方面一&#xff08;评价指标&#xff09;3.2&…...

C++ 79 之 自己写异常类

#include <iostream> #include <string> using namespace std;class MyOutOfRange : public exception{ // 选中exception右键 转到定义 复制一份 virtual const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW 进行函数重写 public: string m_msg;M…...

如何搭建一个成功的短剧制作平台

要搭建一个成功的短剧制作平台&#xff0c;需要考虑多个方面&#xff0c;包括目标定位、技术选择、内容管理、用户体验等。 1、明确目标和定位&#xff1a; 确定你的目标受众是谁&#xff0c;他们的年龄、兴趣、消费习惯等。 明确短剧制作平台的主要定位&#xff0c;是提供原创…...

kotlin类

一、定义 1、kotlin中使用关键字class 声明类,如果一个类没有类体&#xff0c;也可以省略花括号&#xff0c; 默认为public 类型的&#xff1a; // 这段代码定义了一个公开的、不可被继承的Test类 class Test{} // 没有类体&#xff0c;可以省略花括号 class Test 底层代码&…...

android | studio的UI布局和代码调试 | UI调试 (用于找到项目源码)

网上找到一个项目&#xff0c;想快速的搞懂是怎么实现的&#xff0c;搞了半天发现原来android都升级到Jetpack Compose了&#xff0c;然后去找源码挺不容易的&#xff0c;摸索中发现了这个调试的方法&#xff0c;还可以。 https://developer.android.com/studio/debug/layout-i…...

LangChain实战技巧之六:一起玩转config(上篇)——ConfigurableField

简介 Config 包含两大类内容&#xff0c; ConfigurableField 可配置的字段 configurable_alternatives 可配置的替代方案 分别使用两篇文章来给大家介绍&#xff0c;本篇先介绍ConfigurableField 常规介绍 一些资料会这样介绍 model_spec model.configurable_fields(model…...

扫码称重上位机

目录 一 设计原型 二 后台代码 一 设计原型 模拟工具: 二 后台代码 主程序&#xff1a; using System.IO.Ports; using System.Net; using System.Net.Sockets; using System.Text;namespace 扫码称重上位机 {public partial class Form1 : Form{public Form1(){Initialize…...

操作系统入门 -- 进程的通信方式

操作系统入门 – 进程的通信方式 1.什么是进程通信 1.1 定义 进程通信就是在不同进程之间交换信息。在之前文章中可以了解到&#xff0c;进程之间相互独立&#xff0c;一般不可能互相访问。因此进程之间若需要通信&#xff0c;则需要一个所有进程都认可的共享空间&#xff0…...

Python读取wps中的DISPIMG图片格式

需求&#xff1a; 读出excel的图片内容&#xff0c;这放在微软三件套是很容易的&#xff0c;但是由于wps的固有格式&#xff0c;会出现奇怪的问题&#xff0c;只能读出&#xff1a;类似于 DISPIMG(“ID_2B83F9717AE1XXXX920xxxx644C80DB1”,1) 【该DISPIMG函数只有wps才拥有】 …...

elasticsearch的入门与实践

Elasticsearch是一个基于Lucene构建的开源搜索引擎。它提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;具有HTTP web接口和无模式的JSON文档。以下是Elasticsearch的入门与实践的基本步骤&#xff1a; 入门 安装Elasticsearch&#xff1a; 从Elasticsearch官网下载对…...

神经网络学习6-线性层

归一化用的较少 正则化用来解决过拟合&#xff0c;处理最优化问题&#xff0c;批量归一化加快速度 正则化&#xff08;Regularization&#xff09;&#xff1a; 作用&#xff1a;正则化是一种用来防止过拟合的技术&#xff0c;通过向模型的损失函数中添加惩罚项&#xff0c;使…...

PHP框架详解 - CodeIgniter 框架

CodeIgniter 是一个成熟的轻量级 PHP 框架&#xff0c;专为小到中型的 Web 应用开发设计。它以其简洁、灵活和易于学习的特点而受到开发者的喜爱。 CodeIgniter 框架的特点包括&#xff1a; 轻量级&#xff1a;CodeIgniter 的核心非常小&#xff0c;加载速度快&#xff0c;适…...

奔驰EQS SUV升级原厂主动式氛围灯效果展示

以下是一篇关于奔驰 EQs 升级原厂主动氛围灯案例的宣传文案&#xff1a; 在汽车科技不断演进的今天&#xff0c;我们自豪地为您呈现奔驰 EQs 升级原厂主动氛围灯的精彩案例。 奔驰 EQs&#xff0c;作为豪华电动汽车的典范&#xff0c;其卓越品质与高端性能有目共睹。而此次升…...

echarts Y轴展示时间片段,series data数据 也是时间片段,鼠标放上去 提示框显示对应的时间片段

功能要求 1、折线图&#xff0c;展示每天对应的一个时间片段 2、echarts Y轴展示时间片段&#xff0c;如&#xff1a;[00:00,03:00,05:15] 3、X轴展示日期&#xff0c;如&#xff1a;[xx年xx月xx日] 后端返回的数据结构&#xff0c;如 [{xAdate:"2024-06-15",data:…...

20. mediasoup服务器的布署与使用

Mediasoup Demo部署 架构服务分析 服务端提供3个服务&#xff1a; 1.www服务&#xff0c;浏览器通过访问服务器目录获取客户端代码&#xff0c;通过V8引擎&#xff0c;启动底层WebRTC 2.nodejs提供websocket服务和http服务&#xff0c;用于信令交互 3.Mediasoup C提供的流媒体…...

【leetcode--同构字符串】

要求&#xff1a;判断两个字符串的形式是不是一致&#xff0c;即是不是AABC或者ABBBCC这种。 trick&#xff1a;使用set&#xff08;&#xff09;结合zip&#xff08;&#xff09;。 set&#xff08;&#xff09;用法&#xff1a;用于创建一个不包含重复元素的集合 zip&#…...

shell expr功能详解

expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具个特殊功能&#xff0c;判断变量或参数是否为整数、是否为空、是否为0等。 1.字符串表达式 ------------------------- expr支持模式匹配和字符串操作。字符串表达式的优先…...

java继承Thead类和实现Runnable接口创建线程的区别

一、继承Thread类创建多线程 public class Demo{public static void main(String[] args) {MyThread thread new MyThread();thread.start();}} class MyThread extends Thread{Overridepublic void run() {//子线程执行的操作} }注意&#xff1a;开启子线程要调用start()方法…...

interface Ref<T = any> 这是什么写法?为什么写接口还需要加上<T = any>

问: export interface Ref<T any> { value: T [RefSymbol]: true } 这里既然是interface接口,为什么还有<T any>这是什么意思? 回答: <T any> 中的 <T> 表示这是一个泛型参数&#xff0c;它可以在接口中作为类型的占位符&#xff0c;在实际…...

深入探索 MongoDB GridFS:高效大文件存储与管理的全面指南

GridFS 是 MongoDB 的一个规范&#xff0c;用于存储和检索超过 BSON 文档大小限制&#xff08;16MB&#xff09;的文件。与传统的文件系统不同&#xff0c;GridFS 可以将一个大文件分割成多个小块&#xff0c;并存储在 MongoDB 的两个集合中&#xff1a;fs.files 和 fs.chunks。…...

基于CentOS Stream 9平台 安装/卸载 Redis7.0.15

已更正systemctl管理Redis服务问题 1. 官方下载地址 https://redis.io/downloads/#redis-downloads 1.1 下载或上传到/opt/coisini目录下&#xff1a; mkdir /opt/coisini cd /opt/coisini wget https://download.redis.io/releases/redis-7.0.15.tar.gz2. 解压 tar -zxvf re…...

激励-保健理论和公平理论

激励-保健理论 herzberg的激励-保健理论中&#xff0c;保健因素是context of a job&#xff0c;激励因素是content of a job。 context of a job是受组织控制的因素&#xff0c;比如工作条件&#xff0c;基本工资&#xff0c;公司政策等&#xff0c;个人无法支配。content of…...

深入探索 Spring Boot 自定义启动画面

目录 引言什么是 Spring Boot 启动画面Spring Boot 默认启动画面为什么要自定义启动画面如何自定义 Spring Boot 启动画面 修改配置文件使用 Banner 接口通过图片实现启动画面ASCII 艺术画的应用 进阶&#xff1a;基于环境变量的动态 Banner多模块项目中的启动画面Spring Boot…...

Redis实战—Redis分布式锁

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于Redis的分布式锁 Redis锁代码实现 修改业务代码 分布式锁误删问题 分布式锁原子性问题 Lua脚本 编写脚本 代码优化 总结 分布式锁介绍…...

浙江华企做的网站效果如何/友情链接怎么交换

横沥UG五金冲压模具设计、UG模具设计实体分模 模具问题 ① 模具表面粗糙和接触不良。 在研磨凹模面提高表面光洁度的同时&#xff0c;还要达到不形成集中载荷的配合状态。 ② 模具的平行度、垂直度误差。 进行深拉深时&#xff0c;由于模具的高度增加&#xff0c;所以凸模…...

宝鸡手机版网站建设/成都私人网站建设

展开全部1.首先&#xff0c;您需要创建一个div,对div进行添加一个class。我们利用CSS通过class来设置e69da5e6ba9062616964757a686964616f31333366306433div的边框。2.创建一个用于设置边框的CSS文件&#xff0c;对于您实际开发中&#xff0c;将边框添加到您的CSS文件中即可。3…...

溧阳网站建设/seo页面排名优化

Seata实现熔断与限流一、分布式事务问题二、Seata简介三、Seata-Server安装四、订单/库存/账户业务数据库准备1、创建业务数据库2、按业务数据库创建表3、按业务数据库创建对应的回滚日记表五、订单/库存/账户业务微服务准备1、订单业务微服务Module2、库存业务微服务Module3、…...

牌具网站广告怎么做/暴疯团队seo课程

1. STM32 ADC 简介STM32 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC)&#xff0c;这些 ADC 可以独立使用&#xff0c;也可以使用双重模式(提高采样率)。STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道&#xff0c;可测量 16 个外部和 2 个内部信号源…...

wordpress 获取当前位置/无锡百度推广开户

目录 前言 一、ImportBeanDefinitionRegistrar 方式一 方式二 二、EnableDubboConfig与DubboComponentScan 三、DubboConfigConfigurationRegistrar与DubboComponentScanRegistrar 扫描并注册Service Bean 扫描并注册Reference Bean 四、EnableDubbo 五、要点总结 前…...

做国外网站赚钱/怎么申请网址

听云&#xff0c;是一个协助开发运维团队发现解决性能问题的产品。我们专注于性能优化已经8年&#xff0c;2015&#xff0c;为了让更多优秀的互联网人员认识我们&#xff0c;听云在年初同博客园举办回馈活动&#xff0c;听云为2015制订学习计划的朋友们提供了视频学习平台极客学…...