S32K312 RTD 4.0.0 版本 OCU 例程配置流程说明

一、前言

由于 RTD 4.0.0 版本并没有 S32K312 相关例程,本文基于已有的 S32K344 OCU 例程,新建 S32K312 工程,讲解 OCU 例程的相关配置流程。

二、基本概念

  1. OCU(Output Compare Unit – 输出比较单元)本质上是一个计数器,计数器逐一累加直到达到预设值,达到预设值后计数器会清零,重新开始累加,循环往复。
  2. OCU 配置需要一个绑定到一个可用硬件通道的逻辑通道,当比较匹配发生(即计数器达到预设值)时,会触发一个硬件中断和一个输出引脚的状态改变(电平翻转)。
  3. OCU 逻辑通道包含计数器预设值的定义,最大计数器值(一般为 65535),通知回调到用户定义的函数、硬件通道指定引脚的行为和预分频器值(可选第二个预分频器)的设置,如下图 1 所示:

图 1 OCU 逻辑通道配置

三、OCU 配置流程

  1. OCU 配置需要一个绑定到一个可用硬件通道的逻辑通道,当比较匹配发生(即计数器达到预设值)时,会触发一个硬件中断和一个输出引脚的状态改变(电平翻转),这里使能 PTB13 为 OCU 的输出引脚(配置为 eMIOS、输出),使能 PTA29 为输出 GPIO(控制红灯亮灭)。

图 2 PTA29 & PTB13 管脚配置

  1. 添加如图 3 所示外设模块,并配置 Emios_Ocu、Emios_Mcu_Ip 及 IntCtrl_Ip 模块。

图 3 具体驱动模块

a. Emios_Ocu 模块配置

图 4 使能 OCU API 函数功能

图 5 使能 EMIOS0_CH1 对应 OCU 功能

图 6 设置 OCU 计数方式及计数阈值

图 7 OCU 通知函数及输出引脚状态变化配置

图 8 设置 OCU 关联硬件中断通道及预分频值

b. Emios_Mcl_Ip 模块配置

图 9 使能 EMIOS 通用功能

图 10 设置时钟分频及计数模式

c. IntCtrl_Ip 模块配置:查看图 11,可知 EMIOS0_CH1 对应中断服务函数为 EMIOS0_5_IRQ,具体配置如图 12 所示。
 

图 11 EMIOS 通道对应的中断服务函数

图 12 使能 EMIOS0_CH1 对应中断服务函数

  1. main.c 函数
#include "Emios_Ocu_Ip.h"
#include "Emios_Mcl_Ip.h"
#include "Emios_Mcl_Ip_Irq.h"
#include "Clock_Ip.h"
#include "IntCtrl_Ip.h"
#include "Siul2_Port_Ip.h"
#include "Siul2_Dio_Ip.h"#define clockConfig &Clock_Ip_aClockConfig[0]
#define EMIOS_0       (0U)
#define CHANNEL_1     (1U)
/* Global flag updated in irq */
static volatile uint8 toggleLed = 0U;void OcuChannel_0_notification(void);
/**
* @brief    Emios notification periodically called by the configured channel
* @details  Used to blink a led
*/
void OcuChannel_0_notification(void)
{static uint16 count = 0U;if (++count >= 10U){toggleLed = 1U;count = 0;}
}
/**
* @brief        Main function of the example
* @details      Initialize the used drivers and uses the Ocu
*               and Siul2_Dio drivers to toggle a LED periodically
*/int main(void)
{uint8 stateLed = 0;/* Initialize clock */Clock_Ip_Init(clockConfig);/* Initialize all pins using the Siul2_Port driver */Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals);/* Set eMios interrupt */IntCtrl_Ip_Init(&IntCtrlConfig_0);IntCtrl_Ip_EnableIrq(0U);/* Initialize eMios_Mcl for enable global counter bus */Emios_Mcl_Ip_Init(EMIOS_0, &Emios_Mcl_Ip_0_Config_BOARD_INITPERIPHERALS);/* Initialize eMios_Ocu */Emios_Ocu_Ip_Init(&Emios_Ocu_Ip_0_ModuleCfgPB);/* Enable eMios_Ocu channel notification */Emios_Ocu_Ip_EnableNotification(EMIOS_0,CHANNEL_1);/* Start eMios_Ocu Channel */Emios_Ocu_Ip_StartChannel(EMIOS_0,CHANNEL_1);while (1){/* Toggle the LED when the Ocu notification is called */if (1U == toggleLed){toggleLed = 0;Siul2_Dio_Ip_WritePin(LED_RED_PORT, LED_RED_PIN, stateLed);stateLed = stateLed ^ 1U;}}
}
  1. 完成工程的编译和烧录之后,原厂 S32K312 开发板红灯会持续 1s 亮一次,具体如下图所示:

图 13 硬件现象

四、总结

        参照上述【OCU 配置流程】的步骤 1、2、3 完成管脚使能、相关外设模块的添加与配置以及 main.c 源程序的复制与修改,即可完成 OCU 例程配置,感谢您阅读本文!

五、参考文献

[1] RTD_OCU_UM.pdf

[2] S32K3XXRM Rev7.pdf

欢迎登录大大通,阅读原文,浏览更多精彩技术内容吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/434892.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业数据采集系统

一、网页部分代码 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…

c语言200例 066

大家好&#xff0c;欢迎来到无限大的频道 今天给大家带来的是c语言200例。 要求&#xff1a; 根据输入的职业表示&#xff0c;区分是老师还是学生&#xff0c;然后根据输入的信息&#xff0c;将对应的信息输出&#xff0c;如果是学生&#xff0c;则输出班级&#xff0c;如果是…

电子连接器信号完整性仿真实训教程 一

电子连接器信号完整性仿真学习除需要熟悉软件的基本操作外&#xff0c;还需要基本的实际操作练习才能完全掌握&#xff0c;学以致用。因此推出几期实训教程&#xff0c;教程中将不再详细讲怎么一步一步操作软件&#xff0c;重点讲一些步骤&#xff0c;及一些技巧。也会将连接器…

人工值守向无人值守转变的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用…

OpenCV图像文件读写(4)解码图像数据函数imdecode()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从内存缓冲区读取图像。 imdecode 函数从指定的内存缓冲区读取图像。如果缓冲区太短或包含无效数据&#xff0c;函数将返回一个空矩阵 (Mat::dat…

基于STM32的无人驾驶汽车路径规划与视觉识别系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 摄像头图像采集与处理路径规划算法实现实时视觉障碍物检测电机控制与执行应用场景结论 1. 引言 无人驾驶技术是当前自动化和人工智能领域的热门课题之一&#xff0c;涉及到复杂的感知、…

(二)Mat类

构造函数 Mat m(3, 2, CV_8UC3, Scalar(0, 0, 255)); std::cout << m << std::endl;创建一个行数为3&#xff0c;列数为2&#xff0c;图像元素是8位无符号整型&#xff0c;且有3个通道&#xff0c;图像所有像素值被初始化为(0,0,255) opencv中默认的颜色顺序为BGR…

第五十八周周报 FE-GNN

文章目录 week58 FE-GNN摘要Abstract一、大数据相关1. 完全分布式zookeeper2. 污水处理过程2.1 污水处理的基本方法2.2 污水处理基本工艺流程 二、文献阅读1. 题目2. Abstract3. 文献解读3.1 Introduce3.2 创新点 4. 网络框架4.1 特征子空间平坦化4.2 结构化主成分4.3 结论 5. …

OJ在线评测系统 前端创建题目(增) 更新题目(改) 题目列表(查) 以及做题页面的开发 基于VUECLI脚手架画界面

目录 前端创建页面的开发一 创建一个路由 用acro design写 前端创建页面的开发二 题目管理页面 搜索 最終效果 题目更新页面的开发 携带参数的那种 修改路由 页码更新细节 我们先处理菜单项的权限控制和权限隐藏 在这里改 属性绑定一个函数 可以参考聚合搜索项目…

Spring Boot项目连接Oracle数据库启动报错:Undefined Error

描述&#xff1a;远程拉下来的代码&#xff0c;配置了maven仓库后&#xff0c;未进行其他修改&#xff0c;自己本地启动报错。 报错现状&#xff1a; 解决&#xff1a;添加参数-Duser.nameuser后&#xff0c;启动成功。 原因分析&#xff1a; 分析一&#xff1a; maven仓…

第三节-类与对象(中)

1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类&#xff08;空类大小为1&#xff09;。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;…

【html网页制作】旅游风景主题网页制作含css动画及js特效(8页面附效果源码)

HTMLCSS旅游风景主题旅游网页制作 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、网页主题&#x1f333;二、网页效果菜单切换效果PageA、整体页Page1、首页Page2、旅行趣事页Page3、旅行美景页Page4、旅行指南页Page5、旅行视频页Page6、留言页Page7、西湖简介…

论文阅读(十一):CBAM: Convolutional Block Attention Module

文章目录 1.Introduction2.Convolutional Block Attention ModuleExperimentsConclusion 论文题目&#xff1a;CBAM: Convolutional Block Attention Module&#xff08;CBAM&#xff1a;卷积注意力机制&#xff09;   论文链接&#xff1a;点击跳转   代码链接&#xff1a…

汽车3d动画渲染选择哪个?选择最佳云渲染解决方案

面临汽车3D动画渲染挑战&#xff1f;选择正确的云渲染服务至关重要。探索最佳解决方案&#xff0c;优化渲染效率&#xff0c;快速呈现逼真动画。 汽车3d动画渲染选择哪个&#xff1f; 对于汽车3D动画渲染&#xff0c;选择哪个渲染器取决于你的项目需求、预算和期望的效果。Ble…

Llama 3.1 技术研究报告-2

3.3 基础设施、扩展性和效率 我们描述了⽀持Llama 3 405B⼤规模预训练的硬件和基础设施&#xff0c;并讨论了⼏项优化措施&#xff0c;这些措施提⾼了训练效率。 3.3.1 训练基础设施 Llama 1和2模型在Meta的AI研究超级集群&#xff08;Lee和Sengupta&#xff0c;2022&#x…

探索存内计算的未来,高能效内存计算实训专场有感~

写在前面&#xff0c;首先感谢活动方&#xff1a;存内计算开发者社区的邀请来参加本次探索存内计算的未来&#xff0c;高能效内存计算实训专场。下面我给大家分享一下本次的活动实操感受&#x1f600;。 活动议程 本次活动邀请存内技术专家李阳老师分享存内计算是什么&#xf…

Subdominator:一款针对漏洞奖励计划的子域名安全枚举工具

关于Subdominator Subdominator是一款针对漏洞奖励计划的子域名安全枚举工具&#xff0c;可用于在漏洞搜寻和侦察过程中进行被动子域名枚举。它旨在通过高效枚举子域名和各种免费被动资源来帮助研究人员和网络安全专业人员发现潜在的安全漏洞。 Subdominator 与各种免费和付费…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24 1. Enriching Datasets with Demographics through Large Language Models: What’s in a Name? K AlNuaimi, G Marti, M Ravaut, A AlKetbi, A Henschel… - arXiv preprint arXiv …, 2024 通过大型语言…

python获取百度地图路径规划

自制语音助手想做一个查询交通路线的功能&#xff0c;于是就想到了百度地图。在百度地图的服务器端应用中&#xff0c;提供了“轻量级路线规划”API接口&#xff0c;正好可以满足需求。要用这个接口&#xff0c;需要注册百度地图账号并创建一个服务器端的应用。有关开通百度地图…

Docekrfile和docker compose编写指南及注意事项

Dockerfile 基础语法 我们通过编写dockerfile,将每一层要做的事情使用语法固定下来&#xff0c;之后运行指令就可以通过docker来制作自己的镜像了。 构建镜像的指令&#xff1a;docker build /path -t imageName:tag 注意&#xff0c;docker build后的path必须是dockerfile…