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

基于EB的K3XX_GPT定时器中断的实现方法

在这里使用了借用了EB官方的demo,实现的效果每1S产生一个中断,实现LED的亮灭。
首先在port配置中仅到PTA29,这是一个LED灯控制信号。
在这里插入图片描述
在platform中加入PIT中断,因为GPT计数器可以利用PIT中断。
在这里插入图片描述
在MCU的时钟配置中,保持demo的默认配置,使用AIPS_SLOW_CLK时钟,其时钟源为FIRC内部时钟,时钟频率为24M
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
然后在GPT配置中导入该参考时钟源,注意使用的是PIT类型的计数器,要选择CONTINUOUS,这样才会一直产生中断,如果是ONE_SHOT则只有一次中断产生。
在这里插入图片描述
最后生成代码,代码例程也是官方demo中的

void Gpt_PitNotification(void)
{cntt++;toggleLed = 1U;
}/**
* @brief        Main function of the example
* @details      Initializes the used drivers and uses the Gpt
*               and Dio drivers to toggle a LED periodically
*/
int main(void)
{uint8 count = 0U;uint8 pinValue = STD_LOW;/* Init clock */
#if (STD_ON == MCU_PRECOMPILE_SUPPORT)Mcu_Init(NULL_PTR);
#elseMcu_Init(&Mcu_Config_VS_0);
#endif#if (STD_ON == MCU_INIT_CLOCK)/* Initialize the clock tree and apply PLL as system clock */Mcu_InitClock(McuClockSettingConfig_0);#else#error "The Mcu Init Clock API should be enabled from the Mcu driver"
#endif/* Initialize all pins using the Port driver */
#if (STD_ON == PORT_PRECOMPILE_SUPPORT)Port_Init(NULL_PTR);
#elsePort_Init(&Port_Config_VS_0);
#endif/* Initialize Platform driver */Platform_Init(NULL_PTR);/* Initialize the high level configuration structure of Gpt driver */
#if (STD_ON == GPT_PRECOMPILE_SUPPORT)Gpt_Init(NULL_PTR);
#elseGpt_Init(&Gpt_Config_VS_0);
#endif/* Start the Gpt timer */Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_0, 24000000U);/* Enable the Gpt notification to get the event for toggling the LED periodically */Gpt_EnableNotification(GptConf_GptChannelConfiguration_GptChannelConfiguration_0);while (1){/* Toggle the gpio pin to blink the LED when the Pit notification is called */if (1U == toggleLed){count++;pinValue = (STD_LOW == pinValue) ? STD_HIGH : STD_LOW;Dio_WriteChannel(DioConf_DioChannel_Digital_Output_LED, pinValue);toggleLed = 0U;}}Gpt_StopTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_0);//    Exit_Example(TRUE);return (0U);
}

由于PIT的时钟为24M,所以Gpt_StartTimer(GptConf_GptChanelConfiguration_GptChannelConfiguration_0, 24000000U);满偏值写入24000000,则可以实现1S的中断。在PIT中断函数中进行CNT自加,与秒表计数对比,可以验证计时频率符合要求。

但是,实际上到产品上的板子不会去使用内部时钟,而是外部的晶振的时钟,会更加稳定,所以在MCU的时钟配置中,需要把PIT的源时钟修改为PLL时钟。此处使能PLL锁相环,使能PHI0的分频功能
在这里插入图片描述
同时VCO和PHI0输出的频率需要更新,点击计算器按钮可以自动更新。
在这里插入图片描述
同时MUX0中更新其他分支下的时钟频率
在这里插入图片描述
同时在MCUPeripheral中使能PLL时钟

在这里插入图片描述
MCU中修改参考源时钟的频率
在这里插入图片描述
GPT中加入时间参考源
在这里插入图片描述
最后生成相关代码运行即可实现

http://www.xdnf.cn/news/1389439.html

相关文章:

  • 音视频直播卡顿分析与优化:技术原理、实践案例与未来趋势
  • Java 流(Stream)、文件(File)和IO
  • 基于 Python asyncio 和币安 WebSocket 打造高频加密货币预警机器人
  • 【Spring Cloud Alibaba】前置知识
  • 订餐后台项目-day02数据库模型定义笔记
  • 从0开始学习Java+AI知识点总结-28.Linux部署
  • Java 8核心特性详解:从Lambda到Stream的革命性升级
  • lesson49:HTML基础标签全解析:从入门到精通的网页构建指南
  • SQL Server 查看备份计划
  • Cursor不能读取.env文件解决办法(**/.env、**/env.*)
  • 华为认证全解析:价值详解、含金量解读(2025最新版)
  • 安全月报 | 傲盾DDoS攻击防御2025年8月简报
  • CRYPT32!CryptMsgUpdate函数分析之CRYPT32!PkiAsn1Decode函数的作用是得到pci
  • 达梦数据库-归档日志(一)
  • JavaScript 入门教程
  • 《Linux 网络编程六:数据存储与SQLite应用指南》
  • TF-IDF:文本分析的“火眼金睛”
  • PCIe 6.0 TLP路由机制:解密高效数据传输的核心架构
  • 【微知】如何撤销一个git的commit?以及撤销的3种方式?
  • 在本地获取下载chrome,然后离线搬运到 ECS
  • 最小生成树——Kruskal
  • go 使用rabbitMQ
  • 【谷歌浏览器】浏览器实用自用版——谷歌浏览器(Google Chrome)离线纯净版安装 官方版无任何捆绑及广告 【离线安装谷歌浏览器】
  • 通过 KafkaMQ 接入Skywalking 数据最佳实践
  • R ggplot2学习Nature子刊一张图,换数据即可用!
  • leetcode 338 比特位计数
  • 04数据库约束实战:从入门到精通
  • Linux下的网络编程SQLITE3详解
  • 算法题打卡力扣第1004. 最大连续1的个数 III(mid)
  • 技术速递|新手指南:如何在 Foundry Local 中使用自定义模型