前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >英飞凌TriCore架构的MCU系统定时器

英飞凌TriCore架构的MCU系统定时器

作者头像
用户1605515
发布2023-11-24 17:15:24
2050
发布2023-11-24 17:15:24
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

自上次分享了在英飞凌TriCore架构的MCU上移植FreeRTOS后,后台有不少人咨询关于系统时基的事情,今天就来介绍下这个STM。

摘要

本篇文档主要用来介绍英飞凌基于AURIX-2G TriCore 1.6.2架构的 TC3xx系列STM定时器的使用

STM介绍

STM(System Timer) 是为高精度和长周期的全局系统定时应用而设计,是一个向上递增计数器,有很多特点: 自由运行的64位计数器,64位可以同时被读取,64位计数器中的不同32位可以被同时读取,基于比较匹配可以产生灵活的中断服务请求,应用复位后可以自动启动运行,从下图的结构中就可以看出。

STM是一个递增计数器,工作频率为fSTM。清除STMxDIS。复位后,STM启动并立即开始计数。正常运行时是不能操作计数器内容,只能读取。由于STM的宽度为64位,因此不可能用一条指令读取其全部内容。它必须是读取两个加载指令。由于计时器会在两次加载操作之间继续计数,因此读取的两个值是有可能不一致(由于可能从定时器的低部分溢出到两个读操作之间的高部分)。所以为了能够同时连续独处STM的值,采取捕获寄存器(CAP)的办法。因此,CAP将定时器的高半部分保持在完全相同的位置读取低半部分的时间。然后,第二个读取操作将读取CAP的内容以获取完整的计时器值。更多关于STM的详细内容大家可以参考手册第二部分第27章

系统时基

既然STM系统定时器有这么多好处,我们在做开发的时候,不管是裸机还是基于RTOS都可以选用这个STM来作为系统的心跳或者叫时基,在上次给大家分享的在TC33x上移植FreeRTOS,就是基于STM来作为系统的内核心跳SysTick。并且定义为1ms的心跳周期。STM始终fSTM为100Mhz,具体如下

STM的中断会调用freeRTOS的API函数 vPortSystemTickHandler(); 实现系统时基。大家有兴趣的可以去研究下vPortSystemTickHandler();内部内容源码,这个都是开源的。

在移植好的工程里创建任务,开启调度器,就可以了,这里主要要弄清楚这个STM是怎么和FreeRTOS关联起来的,以及如何创建任务。包括任务间的交互,数据传递等。

总结

本文通过STM来实现FreeRTOS的时基运行,需要掌握STM的运行原理和配置,中断服务等。关于这个STM的学习,大家有也可以参考官方的例程和文档,有什么问题也可以在评论区留言。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • STM介绍
  • 系统时基
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档