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

网站内容更新及时高权重网站怎么做

网站内容更新及时,高权重网站怎么做,济南全屋定制,wordpress漂亮的主题文章目录 1 Quad Timer,简称:QTMR2 单个通道的框图3 QTMR配置3.1 QTMR1 时钟使能。3.2 初始化 QTMR1。3.2.1 QTMR_Init 3.3 设置 QTMR1 通道 0 的定时周期。3.3.1QTMR_SetTimerPeriod 3.4 使能 QTMR1 通道 0 的比较中断。3.4.1 QTMR_EnableInterrupts 3.…

文章目录

  • 1 Quad Timer,简称:QTMR
  • 2 单个通道的框图
  • 3 QTMR配置
    • 3.1 QTMR1 时钟使能。
    • 3.2 初始化 QTMR1。
      • 3.2.1 QTMR_Init
    • 3.3 设置 QTMR1 通道 0 的定时周期。
      • 3.3.1QTMR_SetTimerPeriod
    • 3.4 使能 QTMR1 通道 0 的比较中断。
      • 3.4.1 QTMR_EnableInterrupts
    • 3.5 开启 QTMR 。
    • 3.5.1 QTMR_StartTimer
    • 3.6 使能 QTMR1 中 断并设置优先级。 。
    • 3.7编写中断服务函数。
      • 3.7.1 QTMR_GetStatus
      • 3.7.2 QTMR_ClearStatusFlags

1 Quad Timer,简称:QTMR

RT1052 内部集成了 4 个 QTMR 定时器,每个 QTMR 定时器又有 4 个通道.
每个通道都有独立的:

  • 1 个 16 位计数器、
  • 1 个预分频器、
  • 1 个加载值寄存器、
  • 1 个捕获寄存器、
  • 2 个比较寄存器、
  • 两个状态寄存器
  • 1 个控制寄存器等

完全就是一个独立定时器的功能。
可以将QTMR 看成是一个拥有 4*4 个定时器的集合,这样光 QTMR 就拥有 16 个定时器之多

2 单个通道的框图

在这里插入图片描述RT1052 内部有 16 个这样的通道!
RT1052 四定时器每个通道的功能包括:
1)16 位计数器(CNTR),支持向上/下计数。
2)可级联,组成 32/48/64 位计数器。
3)独立分频器(支持:1/2/4/8/16/32/64/128 分频)。
4)支持输出比较和输入捕获功能。
5)支持多种工作模式(14 种)。
6)支持输入滤波器(输入捕获时用)。
7)最大计数频率可达 150Mhz。
8)支持单次计数/连续计数。
9)比较寄存器具有预装载功能。
10)4 个通道可以同时开启计数(同步启动)。
四定时器单个通道的工作模式非常多(14 种),具体某个模式的使用方法请参考《RT1050参考手册》第 47.6.5 节。

3 QTMR配置

QTMR 相关的库函数在 fsl_qtmr.c 和 fsl_qtmr.h 这两个文件中
我们使用 QTMR1 的通道 0 产生中断

3.1 QTMR1 时钟使能。

使用函数 CLOCK_EnableClock 使能 QTMR1 时钟,使用方法如下:

CLOCK_EnableClock(kCLOCK_Timer1)

此函数会被 Q TMR 定时器初始化函数 QTMR_Init 调用,所以不需要我们显示的调用。

3.2 初始化 QTMR1。

使用函数 QTMR_Init 来初始化 QTMR,此函数原型如下:

3.2.1 QTMR_Init

void QTMR_Init(TMR_Type * base,qtmr_channel_selection_t channel,const qtmr_config_t * config)qtmr_config_t qtimer1_config;
QTMR_GetDefaultConfig(&qtimer1_config); //先设置为默认配置
qtimer1_config.primarySource= kQTMR_ClockDivide_128; //设置第一时钟源
QTMR_Init(TMR1, kQTMR_Channel_0, &qtimer1_config); //初始化 QTIMER
  • 第一个参数指定初始化哪个 QTMR,可以选择:TMR1、TMR2、TMR3 和 TMR4
  • 第二个参数选择使用哪个通道,可选择的通道如下:
typedef enum _qtmr_channel_selection
{kQTMR_Channel_0 = 0U, //QTMR 通道 0kQTMR_Channel_1, //QTMR 通道 1kQTMR_Channel_2, //QTMR 通道 2kQTMR_Channel_3, //QTMR 通道 3
} qtmr_channel_selection_t;
  • 第三个参数为指向结构体 qtmr_config_t 的指针
typedef struct _qtmr_config
{qtmr_primary_count_source_t primarySource; //指定第一时钟源qtmr_input_source_t secondarySource; //指定第二时钟源bool enableMasterMode;bool enableExternalForce;uint8_t faultFilterCount;uint8_t faultFilterPeriod;qtmr_debug_action_t debugMode;
} qtmr_config_t;

这个结构体最常用的就是前两个成员变量

  • 第一时钟源可选设置如下:
typedef enum _qtmr_primary_count_source
{kQTMR_ClockCounter0InputPin = 0,kQTMR_ClockCounter1InputPin,kQTMR_ClockCounter2InputPin,kQTMR_ClockCounter3InputPin,kQTMR_ClockCounter0Output,kQTMR_ClockCounter1Output,kQTMR_ClockCounter2Output,kQTMR_ClockCounter3Output,kQTMR_ClockDivide_1, //IPG 总线时钟 1 分频kQTMR_ClockDivide_2, // IPG 总线时钟 2 分频kQTMR_ClockDivide_4, // IPG 总线时钟 4 分频kQTMR_ClockDivide_8, // IPG 总线时钟 8 分频kQTMR_ClockDivide_16, //IPG 总线时钟 16 分频kQTMR_ClockDivide_32, // IPG 总线时钟 32 分频kQTMR_ClockDivide_64, // IPG 总线时钟 64 分频kQTMR_ClockDivide_128 // IPG 总线时钟 128 分频
} qtmr_primary_count_source_t;

第一时钟源为 IPG_CLK_ROOT 的 128 分频,也就是设置为 kQTMR_ClockDivide_128。
第二时钟源的选择类似。

3.3 设置 QTMR1 通道 0 的定时周期。

QTMR1 通道 0 的定时周期通过函数 QTMR_SetTimerPeriod 来设置

3.3.1QTMR_SetTimerPeriod

此函数原型如下:

void QTMR_SetTimerPeriod(TMR_Type *base, qtmr_channel_selection_t channel, uint16_t ticks)
  • 第一个参数指定要设置的 QTMR,这里为 TMR1。
  • 第二个参数指定要设置的通道,这里是通道 0 所以应该设置为 kQTMR_Channel_0。
  • 第三个参数设置匹配比较值,此值就是用来决定定时器溢出时间的。
    • QTMR 的计数方向是可以修改的
    • 当 CTRL 寄存器的 DIR 位为 0 的时候就是向上计数器
    • 当 DIR 位为 1 的时候就是向下计数器,默认是向上计数器。

3.4 使能 QTMR1 通道 0 的比较中断。

使用函数 QTMR_EnableInterrupts 来使能 QTMR1 通道 0 的比较中断,这样当定时器计数值(CNTR0)达到我们设置的匹配比较值的时候就会产生相应中断

3.4.1 QTMR_EnableInterrupts

此函数原型如下:

void QTMR_EnableInterrupts(TMR_Type * base,qtmr_channel_selection_t channel,uint32_t mask)
  • 第一个参数指定要操作的 QTMR,这里为 TMR1。
  • 第二个参数指定要使用的通道,这里是通道 0,即 kQTMR_Channel_0。
  • 第三个参数是要开启的中断类型
typedef enum _qtmr_interrupt_enable
{kQTMR_CompareInterruptEnable = (1U << 0), //比较中断kQTMR_Compare1InterruptEnable = (1U << 1), //比较 1 中断kQTMR_Compare2InterruptEnable = (1U << 2), //比较 2 中断kQTMR_OverflowInterruptEnable = (1U << 3), //溢出中断kQTMR_EdgeInterruptEnable = (1U << 4) //输入边沿检测中断
} qtmr_interrupt_enable_t;

我们要使能的是匹配比较中断,因此选择 kQTMR_CompareInterruptEnable。

3.5 开启 QTMR 。

在相关的配置完成以后,就可以使能 QTMR 了,使用函数 QTMR_StartTimer 来开启 QTMR定时器

3.5.1 QTMR_StartTimer

此函数原型如下:

static inline void QTMR_StartTimer(TMR_Type * base,qtmr_channel_selection_t channel,qtmr_counting_mode_t clockSource)

第三个参数用来设置定时器的计数模式,是上升沿计数还是下降沿计数、双边沿模式。

typedef enum _qtmr_counting_mode
{kQTMR_NoOperation = 0,kQTMR_PriSrcRiseEdge,kQTMR_PriSrcRiseAndFallEdge,kQTMR_PriSrcRiseEdgeSecInpHigh,kQTMR_QuadCountMode,kQTMR_PriSrcRiseEdgeSecDir,kQTMR_SecSrcTrigPriCnt,kQTMR_CascadeCount
} qtmr_counting_mode_t;

这个参数设置的就是寄存器 CTRL0 的 CM 位,本例程中我们选择 kQTMR_PriSrcRiseEdge,也就是第一时钟源上升沿计数模式。

3.6 使能 QTMR1 中 断并设置优先级。 。

在定时器配置完了之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,以使能QTMR1 的相关中断,设置方法如下:

RT1052_NVIC_SetPriority(TMR1_IRQn,6,0); //抢占优先级 6,子优先级 0
EnableIRQ(TMR1_IRQn); //是能 TMR1 中断

3.7编写中断服务函数。

通过函数 QTMR_GetStatus 来获取中断状态,判断此次产生的中断来自哪个通道
调用函数 QTMR_ClearStatusFlags 来清除相应的中断标志位。

3.7.1 QTMR_GetStatus

中断状态获取函数 QTMR_GetStatus 原型如下:

uint32_t QTMR_GetStatus(TMR_Type *base, qtmr_channel_selection_t channel)
  • 第一个参数是要获取的定时器,这里为 TMR1
  • 第二参数就要获取的通道,这里为kQTMR_Channel_0

其实就是读取寄存器 SCTRL0 的值

3.7.2 QTMR_ClearStatusFlags

中断状态(标志位)清除函数 QTMR_ClearStatusFlags 原型如下:

void QTMR_ClearStatusFlags(TMR_Type * base,
qtmr_channel_selection_t channel,
uint32_t mask)

最后一个参数指定要清除的中断类型(中断标志位)

typedef enum _qtmr_status_flags
{kQTMR_CompareFlag = (1U << 0), //比较标志位kQTMR_Compare1Flag = (1U << 1), //比较 1 标志位kQTMR_Compare2Flag = (1U << 2), //比较 2 标志位kQTMR_OverflowFlag = (1U << 3), //溢出标志位kQTMR_EdgeFlag = (1U << 4) //输入边沿检测标志位
} qtmr_status_flags_t;

这里要清除的即使比较标志位,所以选择kQTMR_CompareFlag

http://www.yayakq.cn/news/193624/

相关文章:

  • 有网站开发经验怎么写简历最优秀的wordpress主题
  • html5响应式网站建设店面门面设计
  • ps专门做兼职的网站有哪些台州seo优化
  • zencart 一个产品网站下单safari网页视频怎么下载
  • 兰州网站建设公司有哪些做新媒体广告的网站
  • 深圳哪些设计公司做网站比较出名门户网站建设经验总结报告
  • 驰易网站建设电影视频网站怎么做
  • 哈尔滨网站设计代码交易网站
  • 网站源码下载pdf文件建行个人网上登录入口
  • 织梦网站程序百度推广电话是多少
  • lamp网站架构wordpress免费企业模板
  • 网站建设需要哪些费用平面设计十大风格
  • 网站安全管理国企集团门户网站建设方案
  • 会做网站有什么可以做吗建设电商网站的总结
  • 网站如何做优化Wordpress上传万网空间
  • 合肥网站推广电话网站建设比较好的公司
  • 中国移动国际精品网安阳seo关键词优化
  • 网站框架图片中国建设网上银行下载
  • 对象存储oss做视频网站百度一下百度一下
  • 做网站的难点单一页面网站怎么做
  • 手机网站无响应家政网站建设
  • 国内服务器做彩票网站安全吗wordpress的seo优化
  • 巴中 网站建设网站建设与管理课程代码
  • 专门做甜点的视频网站dede 网站改宽屏代码
  • 自己做购物网站需要什么wordpress文章新窗口打开
  • 凯叔讲故事网站谁做的福州 建站 软件
  • 辽宁省建设厅网站升级怎么学做网站
  • 深圳福田站佛山网站建设专业主修课程
  • 莱州网站建设教程延吉建设局网站
  • 阿里云服务器win系统建站教程北京前端开发的薪资水平