当前位置: 首页 > 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.dtcms.com/a/357261.html

相关文章:

  • 精通与AI对话的艺术:如何通过角色扮演获得精准输出
  • 【Rust】 6. 字符串学习笔记
  • Day12-python文件操作(二)
  • java开发连接websocket接口
  • STM32CubeMX(十八)USB-MSC:外部flash模拟U盘
  • Day17_【机器学习—特征预处理(归一化和标准化)】
  • 期权杂记(二)
  • Hadoop(六)
  • 迁移学习实战:医疗影像识别快速突破方案
  • 【实时Linux实战系列】实时数据可视化技术实现
  • Python OpenCV图像处理与深度学习:Python OpenCV开发环境搭建与入门
  • 嵌入式Linux驱动开发:设备树与平台设备驱动
  • 2023年12月GESP5级C++真题解析,包括选择判断和编程
  • 嵌入式-定时器的输入捕获,超声波获距实验-Day23
  • 如何使用 Vector 连接 Easysearch
  • 【实时Linux实战系列】实时环境监控系统的架构与实现
  • PPT处理控件Aspose.Slides教程:使用 C# 编程将 PPTX 转换为 XML
  • 【实时Linux实战系列】基于实时Linux的虚拟现实应用开发
  • 趣味学Rust基础篇(所有权)
  • 【DeepSeek】公司内网部署离线deepseek+docker+ragflow本地模型实战
  • 《跳出“技术堆砌”陷阱,构建可演进的软件系统》
  • 【PyTorch】神经风格迁移项目
  • 每周资讯 | 《恋与深空》获科隆游戏展2025“最佳移动游戏奖”;8月173个版号下发
  • 【小白笔记】访问GitHub 账户的权限英文单词解释
  • nvm使用和node使用
  • 【前端教程】用 JavaScript 实现4个常用时间与颜色交互功能
  • centos8部署miniconda、nodejs
  • webpack升级
  • 飞牛Nas每天定时加密数据备份到网盘,基于restic的Backrest笔记分享
  • linux和RTOS架构区别