Autosar MCAL-GPT配置及使用

news2024/10/7 18:28:44

文章目录

  • 前言
  • GPT
    • GptChannelConfigSet
      • GptChannelId
      • GptChannelMode
      • GptChannelTickFrequency
      • GptChannelTickValueMax
      • GptEnableWakeup
      • GptNotification
      • GptChannelClkSrcRef
      • GptAssignedHwUnit
    • GptConfigurationOfOptApiServices
      • GptDeinitApi
      • GptEnableDisableNotificationApi
      • GptTimeElapsedApi
      • GptTimeRemainingApi
    • GptDriverConfiguration
      • GptClockReferencePoint
  • GPT的使用
  • 总结

前言

GPT属于MCAL中比较常用且不是很复杂的模块。它初始化和控制微控制器内部的通用定时器(GPT)。Internal General Purpose Timer(s) 。一般用它作为定时器来触发指定的功能。对于Tc27x来说,一般会关联到GTM中的ATOM或TOM通道

GPT

GptChannelConfigSet

配置GPT通道

GptChannelId


一般配置通道会自动生成Id号

cfg配置:

GptChannelMode


GPT_CH_MODE_CONTINUOUS:到达目标时间后,计时器再次以值“0”继续运行

GPT_CH_MODE_ONESHOT:到达目标时间后,定时器自动停止(定时器过期)。

下面两张图很好的说明了两种模式的运行机制:


单次模式时调用Gpt_StartTimer后,到达目标时间时会保持,除非再次调用Gpt_StartTimer


连续模式时调用Gpt_StartTimer后会重复运行,除非调用Gpt_StopTimer


cfg配置:

GptChannelTickFrequency

定时器通道的滴答频率,单位为Hz。此处Tc27x不支持,因为频率在GTM模块中已经设定好了




cfg配置:

GptChannelTickValueMax

以tick为单位的最大值,计时器通道能够计数。随着下一次tick,计时器转到零。此处Tc27x不支持,因为频率在GTM模块中已经设定好了




cfg配置:

GptEnableWakeup

使能通道的唤醒功能。没有用过这个功能


cfg配置:

GptNotification

指向回调函数的函数指针(用于非唤醒通知)


在调用Gpt_StartTimer后到达对应时间,会触发该回调函数。在回调函数中可以继续调用Gpt_StartTimer以继续定时触发




cfg配置:

GptChannelClkSrcRef

配置关联的时钟


cfg配置:

GptAssignedHwUnit

配置关联的硬件通道


cfg配置:

需要确保配置的通道没有被占用,此处我们还使用了中断功能,需要配置对应的回调函数及OS中配置中断源

GptConfigurationOfOptApiServices

配置API函数

GptDeinitApi


使能Gpt_DeInit函数。


cfg配置:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYZnQ2W3-1673347479489)(https://files.mdnice.com/user/30966/fcdaa210-fb3a-41f6-be59-6a447fc5b6ee.png)]

GptEnableDisableNotificationApi


启用Gpt_EnableNotification和Gpt_DisableNotification,用来启用/禁止通道中断通知(与正常模式相关)。


cfg配置:

GptTimeElapsedApi


使能Gpt_GetTimeElapsed函数,该函数返回已经过的时间。


cfg配置:

GptTimeRemainingApi

使能Gpt_GetTimeRemaining函数,该函数返回到达目标时间之前剩下的时间。

cfg配置:

下图很好的说明了两个函数的作用:

GptDriverConfiguration

这里面的配置默认即可

GptClockReferencePoint

配置时钟

cfg配置:

此处我们的计数频率为选择的ATOM/TOM通道的频率,需要确认对应的频率,例如我们使用的是ATOM2的通道0,我们使用的时钟为

由CMU模块可知,CLK0分频系数为9,则此处我们使用的通道频率为100/(9+1)=10MHz.

GPT的使用

在初始化时,使用Gpt_EnableNotification函数使能通道的回调功能,使用Gpt_StartTimer开始计数

	/** Start GPT */
	Gpt_EnableNotification(GPT_CHANNEL);
	Gpt_StartTimer(GPT_CHANNEL,GPT_TIMER);

此处的GPT_TIMER是计数的个数,例如,我们此处的频率为10MHz,计数为50000,则触发Notification的时间为0.005s,我们可以在Notification函数中再次调用Gpt_StartTimer,以达到周期触发的作用

FUNC(void, CDD_E52141_CODE) Cbk_GptNotification(void)
{
	  Gpt_StartTimer(GPT_CHANNEL,GPT_TIMER);

}

总结

至此,MCAL中除了memory之外,其他常用功能都已经介绍完了。后面会继续更新memory相关的内容,包括Nvm,Memif,Fee,Fls等。


若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~ 你的鼓励是对小弟的最大支持~~~ 建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系列33 Flow_Model

Introduction 在上一小节中讲到了Latent Variable Model(LAM),VAE。其主要思想就是将隐变量扩充为高维连续的分布,来增强模型的表达能力。而LAM模型中的核心困难是计算不出来,因为,而的维度过高算不出来。而…

GAN Step By Step -- Step7 WGAN

GAN Step By Step 心血来潮 GSBS,顾名思义,我希望我自己能够一步一步的学习GAN。GAN 又名 生成对抗网络,是最近几年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频。GAN是一个图像的全新的领域&#…

2022 OceanBase 年度报告|用技术让海量数据的管理和使用更简单!

尊敬的各位客户、合作伙伴和开发者: 从 2020 年 6 月 1 日 OceanBase 开启商业化至今,我们一起走过了 900 多天。 从 0.5 到 3.x,我们花了近十年时间,而从 3.x 到 4.x 只用了不到两年,这是 OceanBase 和客户、伙伴、…

C++ 开发环境其实挺难搞的(上)

所谓工欲善其事,必先利其器,我将用两节课的内容向大家介绍 C 的开发工具及开发环境的一些知识。 Visual Studio 诞生至今已有 25 年以上的历史,功能强大,用的人非常多,社区的朋友戏称它为宇宙最强大的 IDE&#xff0c…

LeetCode 147. 对链表进行插入排序

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 147. 对链表进行插入排序,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 二、…

ECC原理和RocketChip Cache ECC实现

一、ECC原理说明ECC(Error Correcting Code)全称为错误纠正码,用于对存储器的数据进行完整性检查和纠正,主要用在SRAM、DDR、NAND等存储器设备上。ECC可以对数据进行单比特的纠错和多比特的检错,其原理基于汉明码编码而来。下图是ECC编码的主…

如何通过光耦合器连接继电器

如何通过光耦合器连接继电器 介绍 以下文章介绍如何使用隔离方法或通过光耦合器器件驱动继电器。我们将学习三种方法,第一种方法是将继电器直接连接到光耦合器输出引脚,第二种方法是使用外部PNP晶体管,第三种方法是使用外部NPN晶体管。任何…

二十九、Docker (5)

🌻🌻 目录一、Maven Docker 插件构建 Docker 镜像1.1 maven Docker 插件构建 Docker 镜像入门1.2 maven Docker 插件构建 Docker 镜像,自定义 DockerFile1.3 maven Docker 插件构建并推送镜像到 Docker 私有仓库二、手动发布部署微服务项目到…

类与对象(三):stactic成员、友元、内部类

类与对象(三)1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2. static成员2.1 概念特性类中成员变量区别(普通变量和static变量):普通成员函数和静态成员函数的区别3. 友元友元函数友元类cout打印自定义类型…

24种代码坏味道和重构手法

最近,小李感觉公司女生们看他的眼神不太对劲了,那种笑容好像是充满慈爱的、姨母般的笑容。 作为一名老实本分的程序员,小李不太习惯这种被人过度关注的感觉,他不知道发生了什么。 小李和小王的关系似乎过于亲密,还经…

ZooKeeper 安装

ZooKeeper 安装 1. 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。 2、上传 将下载的ZooKeeper放到/opt/ZooKeeper目录下 #上传zookeeper altp put f:/setup/apache-zookeeper-3.5.6-bin.tar.gz #打开 opt目…

(十)devops持续集成开发——jenkins流水线发布一个docker harbor仓库版的后端maven项目

前言 本节内容我们使用jenkins流水线组件发布一个docker环境的后端maven项目,并使用docker的harbor仓库完成镜像的存储,通过拉取harbor仓库中的项目镜像,完成后端项目的发布,关于harbor仓库的搭建,可以参考往期博客内…

Python学习笔记之模块

可迭代对象 概念:更新换代,每次更新都是根据上一次的结果作为基础。 有哪些:字符串,列表,字典,元组,集合,文件对象,特殊函数(生成器) 迭代器对…

软件测试/测试开发 | AppCrawler 自动遍历测试工具实践(一)

本文为霍格沃兹测试学院学院学员课程学习笔记。 公众号搜索:TestingStudio 霍格沃兹的干货都很硬核 AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目,通过名字我们大概也能猜出个方向,Crawler 是爬虫的意思,App 的爬虫&am…

GitHub上标星79K的LeetCode算法小抄开放下载了

在大厂面试中我们不可避免的会考到算法,为什么大厂一定要考察算法呢?因为它包含了太多的逻辑思维,可以考察你思考问题的逻辑和解决问题的能力;这一点也是面试官比较看重的,因为它可以反映出你的潜力,我曾经…

Qt布局管理器(QHBoxLayout,QVBoxLayout)

文章目录布局管理器是什么使用代码添加布局管理器QVBoxLayoutQHBoxLayout使用ui文件添加布局管理器布局管理器的嵌套提示:以下是本篇文章正文内容,下面案例可供参考 布局管理器是什么 可以把一些组件按一定的次序排列,这就是布局管理器。 他…

反欺诈指南|网购平台如何保障公平交易

网购平台是社会零售重要的组成部分。国家统计数据显示,2021年,全国实物商品网上零售额达10.8万亿元,占社会消费品零售总额的比重为24.5%,对社会消费品零售总额增长的贡献率为23.6%。 网购平台促成买卖双方交易而建立的平台&#…

OpenBMI运动想象--认知科学实践设计

目录 一、简要介绍 (一)材料与准备工具 数据集下载 工具箱下载 参考 (二)OpenBMI工具箱介绍 (三)数据集详细介绍 数据拆分 数据解读 二、预处理 (一)目标 (二&#xff09…

Linux安装和入门

文章目录1、课程介绍2、为什么需要Linux3、Linux简介3.1、什么事Linux3.2、Linux优点3.3、常见的Linux系统3.4、小结4、虚拟机安装4.1、引入4.2、常见的虚拟机软件4.3、安装vmware4.4、vmware常用操作4.4.1、全局配置虚拟机(Linux系统)存储位置4.4.2、虚拟机操作5、CentOS安装5…

Python中的消息框对话框tkinter.messagebox

介绍:使用:选择消息框的模式:提示消息框:【返回”ok”】消息警告框【返回”ok”】:错误消息框【返回”ok”】:对话框:询问确认对话框【返回值:yes/no】确认/取消对话框【返回值:True/False】是/…