热门标签 | 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即可。

 


推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
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社区 版权所有