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

基于MCAL的S32K3 GPIO外部中断使用

0、简介

本文基于S32K312 介绍GPIO的外部中断,主要是记录开发流程,本文基于《基于MCAL的S32K3 MCU使用》的工程,环境如下:

MCU:NXP S32k312

RTD版本:SW32K3_S32M27x_RTD_R21-11_4.0.0_D2311

EB版本:tresos Studio 29.0

本文是软件模拟SPI(后简称SSPI)的前提,故使用相关pin。

2、MCAL

2.1 PORT配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.2 ICU配置

IcuHwInterruptConfigList

根据需求添加硬件物理中断通道,并使能中断。
在这里插入图片描述

IcuSiul2

在IcuSiul2中添加中断通道号
在这里插入图片描述

IcuChannel

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请记得将相关MCAL 静态代码放入工程,并添加相关include路径:
同时,需要依赖Rte_TS_T40D34M40I0R0,同理处理。
在这里插入图片描述

在这里插入图片描述

2.3 Platform

Interrupt controller

在这里插入图片描述

在这里插入图片描述
SUIL_0_IRQn对应0-7的外部引脚中断
SUIL_1_IRQn对应8-15的外部引脚中断
SUIL_2_IRQn对应16-23的外部引脚中断
SUIL_3_IRQn对应24-31的外部引脚中断

本项目使用的中断通道号为22,23。故只需使能SUIL_2_IRQn中断。

SIUL2_EXT_IRQ_16_23_ISR中断的处理函数如下:
在这里插入图片描述

2.3 代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中Icu_ChannelType Channel号见Icu_Cfg.h
在这里插入图片描述

int main(void)
{
    /* Initialize Platform driver */
    Platform_Init(NULL_PTR);

    /* Install ISRs */
    Platform_InstallIrqHandler(SIUL_2_IRQn, &SIUL2_EXT_IRQ_16_23_ISR, NULL_PTR);
    /* Enable ISRs*/
    Platform_SetIrq(SIUL_2_IRQn, TRUE);

    Icu_Init(&Icu_Config);
    Port_Init(&Port_Config);

    Icu_EnableEdgeDetection(IcuChannel_0_PTC14_EIRQ22); //使能边沿检测
    Icu_EnableEdgeDetection(IcuChannel_1_PTC15_EIRQ23);
    Icu_EnableNotification(IcuChannel_0_PTC14_EIRQ22); //使能回调
	Icu_EnableNotification(IcuChannel_1_PTC15_EIRQ23);
}
void IcuSginalEdgeDetection_SSPI_CS_Notification(void){
	static uint32_t SSPI_CS_count=0;
	SSPI_CS_count++;
}

void IcuSginalEdgeDetection_SSPI_SCK_Notification(void){
	static uint32_t SSPI_SCK_count=0;
	SSPI_SCK_count++;
}

2.4 试验

另一端接spi主机产品。
在这里插入图片描述

2.5 AUTOSAR OS

若引入AUTOSAR OS之后,应将ISR注册给OS。
(OS配置对应中断,并在程序中注册处理函数)
在这里插入图片描述
在这里插入图片描述

相关文章:

  • Redux 和 MobX 高频面试题
  • 类变量和类方法
  • 《高效迁移学习:Keras与EfficientNet花卉分类项目全解析》
  • 大脑宏观结构中的富集俱乐部:图论分析视角
  • 嵌入式硬件篇---手柄控制控制麦克纳姆轮子
  • Webpack Vite 前端高频面试题
  • 详解部分依赖
  • go函数详解
  • H-vmunet: High-order Vision Mamba UNet for Medical Image Segmentation模型详解及代码复现
  • Drools规则引擎在临床路径逻辑中的编程实例讨论汇总
  • java通配符?, T, E, K, V, N(简单易懂)
  • 树莓派4B使用Ubuntu20.04连接不上热点
  • 从零开始学习PX4源码10(启动过程)
  • AI Agent系列(三) -Agent实现
  • 云原生服务网格:微服务通信的智能中
  • vue3-computed计算属性和reactive响应式系统结合使用
  • 01、Hive从入门到放弃,第一章:简单入门与安装
  • 引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能
  • Leetcode-146.LRU缓存
  • Oracle RAC环境下自动清理归档日志实战指南
  • 白玉兰奖征片综述丨海外剧创作趋势观察:跨界·融变·共生
  • 上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 李峰已任上海青浦区委常委
  • 秘鲁总统任命前司法部长阿拉纳为新总理
  • 中欧金融工作组第二次会议在比利时布鲁塞尔举行
  • 5吨煤炭“瞬间蒸发”?掺水炭致企业损失千万,腐败窝案曝光