热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LPC55S69之定时器

使用CTimer来产生100ms和1s标志位,用于在主循环中使用。一、引脚。GPIO中二、代码。#includefsl_debug_console.h#i

使用CTimer来产生100ms和1s标志位,用于在主循环中使用。

一、引脚。

GPIO中

二、代码。

#include "fsl_debug_console.h"
#include "board.h"
#include "fsl_ctimer.h"
#include "pin_mux.h"
#include #define CTIMER CTIMER2 /* Timer 2 */
#define CTIMER_MAT_OUT kCTIMER_Match_1 /* Match output 1 */
#define CTIMER_CLK_FREQ CLOCK_GetCTimerClkFreq(2U)
void ctimer2_callback(uint32_t flags);
volatile uint32_t g_pwmPeriod = 0U;
volatile uint32_t g_pulsePeriod = 0U;
static ctimer_callback_t ctimer_callback[] = {ctimer2_callback};volatile uint32_t gCtimer100msCnt = 0U;
volatile uint32_t gCtimer100msFlag = 0U;
volatile uint32_t gCtimer1sFlag = 0U;status_t CTIMER_GetPwmPeriodValue(uint32_t pwmFreqHz, uint8_t dutyCyclePercent, uint32_t timerClock_Hz) {g_pwmPeriod = (timerClock_Hz / pwmFreqHz) - 1;if (dutyCyclePercent == 0) {g_pulsePeriod = g_pwmPeriod + 1;} else {g_pulsePeriod = (g_pwmPeriod * (100 - dutyCyclePercent)) / 100;}return kStatus_Success;
}void ctimer2_callback(uint32_t flags) {gCtimer100msFlag = 1;if(gCtimer100msCnt > 9) {gCtimer1sFlag = 1;gCtimer100msCnt = 0;} else {gCtimer100msCnt++;}
}int main(void) {ctimer_config_t config;uint32_t timerClock;uint8_t flag1 = 0,flag2 = 0;CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);CLOCK_AttachClk(kFRO_HF_to_CTIMER2);BOARD_InitPins();BOARD_BootClockPLL150M();BOARD_InitDebugConsole();CTIMER_GetDefaultConfig(&config);timerClock = CTIMER_CLK_FREQ / (config.prescale + 1);CTIMER_Init(CTIMER, &config);CTIMER_RegisterCallBack(CTIMER, &ctimer_callback[0], kCTIMER_SingleCallback);CTIMER_GetPwmPeriodValue(10, 50, timerClock); // 10Hz = 100ms中断一次CTIMER_SetupPwmPeriod(CTIMER, CTIMER_MAT_OUT, g_pwmPeriod, g_pulsePeriod, true);CTIMER_StartTimer(CTIMER);while (1) {if(gCtimer100msFlag == 1) {if(flag1 == 0) {GPIO_PinWrite(BOARD_INITPINS_OUT1_GPIO,BOARD_INITPINS_OUT1_PORT,BOARD_INITPINS_OUT1_PIN,0);flag1 = 1;} else {GPIO_PinWrite(BOARD_INITPINS_OUT1_GPIO,BOARD_INITPINS_OUT1_PORT,BOARD_INITPINS_OUT1_PIN,1);flag1 = 0;}gCtimer100msFlag = 0;} else if(gCtimer1sFlag == 1) {if(flag2 == 0) {GPIO_PinWrite(BOARD_INITPINS_OUT2_GPIO,BOARD_INITPINS_OUT2_PORT,BOARD_INITPINS_OUT2_PIN,0);flag2 = 1;} else {GPIO_PinWrite(BOARD_INITPINS_OUT2_GPIO,BOARD_INITPINS_OUT2_PORT,BOARD_INITPINS_OUT2_PIN,1);flag2 = 0;}gCtimer1sFlag = 0;}}
}

三、其它问题。

使用CTimer0、1、3、4时,发现

timerClock = CTIMER_CLK_FREQ / (config.prescale + 1);的CTIMER_CLK_FREQ为0,将其改为96000000即可。

 


推荐阅读
  • This post discusses an issue encountered while using the @name annotation in documentation generation, specifically regarding nested class processing and unexpected output. ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 本文详细介绍了Linux系统中的进程管理函数,涵盖了获取进程ID、用户ID、创建子进程、信号处理等关键操作。通过这些函数,开发者可以更好地控制和管理进程行为。 ... [详细]
author-avatar
陈思有婚纱梦127092
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有