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

上海市企业网站建设app下载注册推广

上海市企业网站建设,app下载注册推广,网站建设功能规划,郑州网站 建设文章目录 1 通用定时器1.1 定时器框图1.2 实现周期性中断 2 相关寄存器3 定时器配置3.1 时钟使能3.2 初始化GPT1定时器3.2.1 base3.2.2 initConfig3.2.2.1 clockSorce3.2.2.2 divider3.2.2.3 enablexxxxx 3.3 设置 GPT1 比较值3.3.1 base3.3.2 channel3.3.3 value 3.4 设置 GPT… 文章目录 1 通用定时器1.1 定时器框图1.2 实现周期性中断 2 相关寄存器3 定时器配置3.1 时钟使能3.2 初始化GPT1定时器3.2.1 base3.2.2 initConfig3.2.2.1 clockSorce3.2.2.2 divider3.2.2.3 enablexxxxx 3.3 设置 GPT1 比较值3.3.1 base3.3.2 channel3.3.3 value 3.4 设置 GPT1 输出比较 1 的 中断3.5 使能 GPT3.6 设置 GPT1 中断 优先级3.7 编写中断服务函数3.7.1 GPT_GetStatusFlags3.7.2 GPT_ClearStatusFlags 3.8 最终代码 1 通用定时器 RT1052 内部包含 2 个通用定时器GPT1 和 GPT2以下简称 GPT 1.1 定时器框图 一个 32 位定时器拥有 2 个输入捕获通道、3 个输出比较通道以及相应的中断。 132 位计数器CNT仅支持递增计数方式。 212 位可编程预分频器(PR)计数器时钟频率的分频系数为 14096 之间的任意数值。 32 个输入捕获通道支持上升沿、下降沿和任意边沿捕获。 43 个输出比较通道支持取反、设置、清零和生成单脉冲1 个输入时钟模式。 5支持捕获、比较和溢出中断。 6支持低功耗模式下继续运行。 6支持重启Restart模式和自由运行Free Run模式 重启模式当计数器值与比较值匹配时计数器自动清零重新开始计数。自由运行模式计数器值总是从 0 开始计数一直到 0XFFFFFFFF 溢出发生匹配事件不会导致定时器清零。 1.2 实现周期性中断 使用重启模式利用比较值1 来设置溢出时间 2 相关寄存器 3 定时器配置 GPT 相关的库函数在 fsl_gpt.c 和 fsl_gpt.h 这两个文件中 3.1 时钟使能 GPT 初始化函数 GPT_Init 默认会使能GPT 使能。函数里面通过 CLOCK_EnableClock 来使能了 GPT1 时钟。 3.2 初始化GPT1定时器 void GPT_Init(GPT_Type *base, const gpt_config_t *initConfig)gpt_config_t gpt1_onfig; GPT_GetDefaultConfig(gpt1_onfig); //先初始化 GPT1 为默认值 gpt1_onfig.clockSourcekGPT_ClockSource_Periph; //初始化时钟源 perclk_clk_root gpt1_onfig.dividerpsc; //设置分频值 GPT_Init(GPT1,gpt1_onfig); //初始化 GPT1 3.2.1 base GPT1 3.2.2 initConfig typedef struct _gpt_init_config {gpt_clock_source_t clockSource; //选择时钟源uint32_t divider; //时钟源分频bool enableFreeRun;bool enableRunInWait;bool enableRunInStop;bool enableRunInDoze;bool enableRunInDbg;bool enableMode; } gpt_config_t;3.2.2.1 clockSorce clockSource 用来设置用于 GPT 的时钟源 typedef enum _gpt_clock_source {kGPT_ClockSource_Off 0U, //关闭时钟kGPT_ClockSource_Periph 1U, //外设时钟(ipg_clk)kGPT_ClockSource_HighFreq 2U, //高速参考时钟(ipg_clk_highfreq)kGPT_ClockSource_Ext 3U, //外部参考时钟kGPT_ClockSource_LowFreq 4U, //低速参考时钟(ipg_clk_32k)kGPT_ClockSource_Osc 5U, //24M 晶振 } gpt_clock_source_t;实 际 上 设 置 的 是 CR 寄 存 器 的 CLKSRC 位 一 般 选 择 外 设 时 钟 kGPT_ClockSource_Periph (ipg_clk)作为 GPT 的时钟源 外设时钟配置一般为75Mhz。 3.2.2.2 divider divider 设置时钟源分频可以设置的值范围为 0~4095分别对应 1~4096 分频。 实际设置的是 PR 寄存器的 PRESCALER 位比如我们将分频值设置为 2那么 GPT1 最终的时钟就是:75MHz/(21)25MHz。 3.2.2.3 enablexxxxx 使能 GPT 的相应模式 3.3 设置 GPT1 比较值 设置好比较值就可以决定确定GPT1的溢出时间了也就是定时时间。 GPT1 比较值的设定通过函数 GPT_SetOutputCompareValue 来完成 static inline void GPT_SetOutputCompareValue(GPT_Type *base,gpt_output_compare_channel_t channel,uint32_t value)3.3.1 base GPT1 3.3.2 channel typedef enum _gpt_output_compare_channel {kGPT_OutputCompare_Channel1 0U, //输出比较通道 1kGPT_OutputCompare_Channel2 1U, //输出比较通道 2kGPT_OutputCompare_Channel3 2U, //输出比较通道 3 } gpt_output_compare_channel_t;3.3.3 value 第三个参数就是要设置的比较值。 比如我们设置 GPT1 分频值为 3749那么GPT1 的时钟就是 75MHz/(37491)20000Hz比较值设置为 10000 的话那么每 0.5s 就会产生一次比较中断这样就实现了 0.5s 的定时。 3.4 设置 GPT1 输出比较 1 的 中断 输出比较中断设置通过函数 GPT_EnableInterrupts 来完成 GPT_EnableInterrupts(GPT_Type *base, uint32_t mask);GPT_EnableInterrupts(GPT1, kGPT_OutputCompare1InterruptEnable);使用 GPT1 的输出比较通道 1所以设置为 kGPT_OutputCompare1InterruptEnable。 3.5 使能 GPT 调用函数 GPT_StartTimer 来使能 GPT 定时器 void GPT_StartTimer(GPT_Type *base)设置 CR 寄存器的 EN 位 3.6 设置 GPT1 中断 优先级 因为要产生中断必不可少的要设置 NVIC 相关寄存器 RT1052_NVIC_SetPriority(GPT1_IRQn,5,0); //抢占优先级 5子优先级 0 EnableIRQ(GPT1_IRQn); //使能 GPT1 中断3.7 编写中断服务函数 中断产生后需要通过函数 GPT_GetStatusFlags 判断是否为比较中断。在处理完中断之后调用函数 GPT_ClearStatusFlags 来清除该中断标志。 3.7.1 GPT_GetStatusFlags static inline uint32_t GPT_GetStatusFlags(GPT_Type *base, gpt_status_flag_t flags)GPT1flags typedef enum _gpt_status_flag {kGPT_OutputCompare1Flag GPT_SR_OF1_MASK, //输出比较通道 1 中断标志kGPT_OutputCompare2Flag GPT_SR_OF2_MASK, //输出比较通道 2 中断标志kGPT_OutputCompare3Flag GPT_SR_OF3_MASK, //输出比较通道 3 中断标志kGPT_InputCapture1Flag GPT_SR_IF1_MASK, //输入捕获通道 1 中断标志kGPT_InputCapture2Flag GPT_SR_IF2_MASK, //输入捕获通道 2 中断标志kGPT_RollOverFlag GPT_SR_ROV_MASK, //溢出中断标志 } gpt_status_flag_t;3.7.2 GPT_ClearStatusFlags 中断状态(标志位)清除函数 GPT_ClearStatusFlags 原型如下 static inline void GPT_ClearStatusFlags(GPT_Type *base, gpt_status_flag_t flags)GPT1kGPT_OutputCompare1Flag。 3.8 最终代码 gpt_config_t gpt1_onfig;//初始化GPTIMER1时钟源为perclk_clk_root75MHz //pre:分频值0~4096 //comcount:比较计数值0~0xFFFFFFFF //当ocrxCNT时,产生中断. //定时时间ocrx*(psc1)/PERCLK_CLK_ROOT void GPT1_Int_Init(u16 psc,u32 ocrx) {GPT_GetDefaultConfig(gpt1_onfig); //先初始化GPT1为默认值gpt1_onfig.clockSourcekGPT_ClockSource_Periph; //初始化时钟源perclk_clk_rootgpt1_onfig.dividerpsc; //设置分频值GPT_Init(GPT1,gpt1_onfig);GPT_SetOutputCompareValue(GPT1,kGPT_OutputCompare_Channel1,ocrx); //设置比较计数值GPT_EnableInterrupts(GPT1,kGPT_OutputCompare1InterruptEnable); //使能GPT比较通道1中断RT1052_NVIC_SetPriority(GPT1_IRQn,5,0); //抢占优先级5子优先级0EnableIRQ(GPT1_IRQn); //使能GPT1中断GPT_StartTimer(GPT1); //开始定时器 }//GPT1中断服务函数 void GPT1_IRQHandler(void) {//OCR1中断if(GPT_GetStatusFlags(GPT1,kGPT_OutputCompare1Flag)){LED1_Toggle; //LED1灯翻转GPT_ClearStatusFlags(GPT1,kGPT_OutputCompare1Flag);//清除中断标志位}__DSB(); //数据同步屏蔽指令 }
http://www.dnsts.com.cn/news/239005.html

相关文章:

  • 做盗版视频网站吗西餐厅网站源码
  • 黑猫会活动策划网站网站策划名词解释
  • 河北省建设机械会网站网站建设述职报告
  • 精品电商网站建设设计网站主页要多少钱
  • 网站内容设计基本原则wordpress mo po
  • 宁波设计网站公司怎么看一个网站是谁做的
  • 公司直招的招聘网站软件开发用什么笔记本
  • 动感网站模板网站建设合同注意点
  • wordpress网站攻击购物网站建设的必要性
  • 做软件营销网站怎么样扬州市住房和城乡建设局网站
  • 广州免费自助建站平台太原网络搭建
  • 现在电商做的设计用的什么网站艺友网站建设
  • 锡山区住房和城乡建设局网站深圳平面设计公司排名榜
  • 网站建设作seo网站结构优化
  • 学做分类网站p2p金融网站建设
  • 开源 购物网站wordpress加入链接
  • 平面设计师的工作内容泰州整站优化
  • 建站系统主要包括企业网站系统网页设计模板百度云
  • 孵化器网站建设网站备案密码格式
  • 大的网站建设公司专门为98k做的网站
  • 怎么利用网站做产品推广页面设计模板简约
  • 微信公众号红包网站开发做自行车车队网站的名字大全
  • 西安建站平台哪个好南宁机关两学一做网站
  • 建设银行网站ie11打不开一个女的让我和她做优惠网站
  • 做包装找灵感看什么网站山东站群网站建设
  • 做导购网站多少钱租网站空间
  • 公司如何做网站做推广什么是网络营销代理
  • 广东网站建设软件品牌塑造
  • 简洁网站设计企业对企业的网站
  • 最好看免费观看高清大全电影网站互联网推广平台