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

四川省住房和城乡建设厅网站打不开品牌建设方案和思路

四川省住房和城乡建设厅网站打不开,品牌建设方案和思路,重庆彼客的网站是谁家做的,做调查可以赚钱的网站系统滴答前言SysTick概述SysTick是个啥SysTick结构框图1. 时钟选择2.计数器部分3.中断部分工作一个计数周期#xff08;从重装载值减到0#xff09;的最大延时时间工作流程SysTick寄存器1.控制和状态寄存器SysTick-CTRL2.重装载值寄存器SysTick-LOAD3.当前值寄存器Sy… 系统滴答前言SysTick概述SysTick是个啥SysTick结构框图1. 时钟选择2.计数器部分3.中断部分工作一个计数周期从重装载值减到0的最大延时时间工作流程SysTick寄存器1.控制和状态寄存器SysTick-CTRL2.重装载值寄存器SysTick-LOAD3.当前值寄存器SysTick-VAL4.校准值寄存器配置流程代码总结前言 上一篇中介绍了关于STM32F407的时钟系统在了解了系统的时钟后最重要的内容就是搞定定时器的操作本文从最基本的定时器也是内核里面自带的一个定时器——SysTick(系统滴答)来进行介绍。旨在搞清楚什么是系统滴答系统滴答有什么用系统滴答怎么用。 SysTick概述 SysTick这个词其实之前出现过在介绍中断的时候就是下面这个图SysTick就出现了看他的位置在图中阴影部分内也就是说SysTick是内核里面的属于NVIC的一部分不是类似USART、GPIO的片上外设而是一个内核内的外设看图中有个箭头指向了NVIC说明它是可以像前面用过的EXTI、USART来产生中断的。 SysTick是个啥 关于是个啥这种问题实在是不好表述咱还是让官方来作答吧。 看了上面的描述会有一个大致的概念首先它是一个可编程的系统定时器其次它被用来做延时和计时的操作然后还可以触发中断。有一点需要纠正上面说它是一个32位的自动递减计数器这点有误在STM32F407中它是一个24位的自动递减计数器。 这里一直在说系统滴答是个定时器那么定时器是个啥直白点说定时器就是一个按照时间规律递增或者递减的计数器在STM32中这个时间规律就是时钟例如我们假设系统滴答的时钟是168MHZ那么系统滴答这个定时器就会在一秒钟内从0自增到168 000 000同样的换个方向来理解就是说计数器计满168000 000就是1s钟的时间。至于递减和递增递减就是说计数器的初始有我们给定然后计数器就从这个值开始做自减而自增则是我们给定值然后计数器从0开始自增一直增加到这个数。 好了在有了一个大致的映像后下面就来具体分析它的结构和功能。 SysTick结构框图 由于系统滴答是内部定时器所以在ST公司的中文参考手册是找不到的只有在ARM的权威指南中才可以找到相关描述具体位置在M3和M4权威指南的第九章第五节。 下拉就可以看见系统框图 还是按照老套路把能够省略部分先噶了这里可以很明显的看见最下面红框与上面的东西都没有联系所以它是可以噶了的他的作用就是校准SysTick的一般来说SysTick就是使用的系统时钟如果这个不准了那么多半这个单片机也命不久矣所以这个东西可以直接不看。 去掉不需要看的接下来就分模块一个部分一个部分的来介绍。 1. 时钟选择 如下图左侧的红框代表的就是系统滴答的时钟输入选部分绿色框内是一个二选一数据选择器两个输入分别是处理器时钟以及经过上升沿检测的参考时钟执行选择的是下方的“控制和状态寄存器的第2位”具体的选择流程在寄存器部分会详细介绍。然后时钟就给到了计数器。 既然有两个输入的时钟那么这两个时钟具体是指什么呢 其一是处理器时钟也就是我们说的主频对于STM32F407来说对应168MHZ那么另外一个参考时钟是什么呢其实这个时钟在昨天的时钟树介绍中也出现了。如下图所示橙色框中的到Cortex系统定时器的就是这里的参考时钟可以发现它经过了一个8分频的分频器也就是说这个时钟的频率应该是168/821Mhz。 2.计数器部分 计数器简化后如下图所示这是一个计数器的最基本结构首先有三部分输入 1.时钟基准这个时钟直接决定了这个计数器多少时间执行一次计数 2.重装载值上方的重装载值直接决定了计数器的最大计数值 3.控制部分控制部分直接决定了计数器什么时刻开始计数什么时候关闭计数这里的第0位就是用来控制计数器是否计数的。 然后是输出部分输出只有一个方向就是4的位置注意描述当计数器从1减到0的时候会触发而且这个触发是指向了“控制和状态寄存器”的这就说明当计数完成的时候在“控制和状态寄存器”中会有对应的位让我么来判断计时是否完成。 最后最主要的部分就是橙色框的24位向下计数器它的作用就是隔一段时间将数值减一。当然这里的明子就叫向下计数器那么肯定还有对应的向上计数器以及中心对齐的计数器这个在后面基本通用和高级定时器中会碰到遇到了再说。 3.中断部分 然后这个图还剩最后一部分就是有关中断的了这里有一个与门与门的输入一个来自计数器技术完成后的标志另一个来自“控制与状态寄存器”的第1位也就是中断使能说明在需要使用到中断的过程中需要使能这个位才能开启中断。 工作一个计数周期从重装载值减到0的最大延时时间 弄清楚了上面的结构后就可以计算出两个频率下计数器工作一个周期最长所需要花费的时间。 最大的重装载值2^2416777216 系统滴答具备两个时钟源 内核时钟主频提供时钟 168MHZ 最大的延时时长1S16777216/168 000 0000.09986S 0.09986s----99.8ms 外部时钟由AHB线提供 21MHZ 最大的延时时长1S16777216/21 000 0000.7989 S 0.7989s-----》798.9ms 工作流程 根据框图的分析可以大致总结出系统滴答的初始化流程 {①选择时钟②根据自己所需时间计算出重装载值③使能计数器④判断对应的标志位是否到了到了说明计时到了没到说明计时还没到 }SysTick寄存器 其实根据框图寄存器也已经猜的七七八八了还是具体的看一眼关于系统滴答一共有四个寄存器。 1.控制和状态寄存器SysTick-CTRL 写法SysTick-CTRL 功能对系统滴答定时器做控制以及读取对应的状态 第0位ENALEB 置1使能计数器 一直重复工作 置0失能计数器 第1位中断使能位 计数标志一定会置1/中断标志 置1使能中断 置0失能中断 第2位选择时钟源 默认1 置1选择内核时钟 168MHZ 置0外部参考时钟 21MHZ 第16位标志位 只读 为1计数器到0则返回1 为0读取时清零 读取时的具体写法 while(! (SysTick-CTRL (116)) );2.重装载值寄存器SysTick-LOAD 写法: SysTick-LOAD 功能提供计数器的最大值 用法直接写入需要写入的最大计数值 不能超过最大的重装载值范围0-1667216 SysTick-LOADarr-1 这个值具体写入多少要结合需求计算出大小 3.当前值寄存器SysTick-VAL 写法SysTick-VAL 功能存储计数器的当前值 读取这个寄存器能够获取到计数器的当前值 写入这个寄存器任意值都能清除计数标志位 4.校准值寄存器 在分析框图的时候提到过这个一般不用。 配置流程 这里的配置流程分为两类 其一是实现一个延时功能延时功能只需要定时器工作一个周期也就是从重装载值减到一的一个过程执行一次后需要关闭定时器不让他还会不停的从重装载值减到0然后又从重装载值减到0无限循环。 伪代码 实现系统的us延时参数 {//选择时钟 建议选择外部时钟//写入重装载值 21*参数//当前值清零//打开计数器//等待标志位置1//关闭计数器 }其二就是利用中断一定时间进一次中断以此来实现一个时间片轮询的操作方式。这时候就需要定时器一直计数了所以不能计数完成后就关闭计数器了。伪代码如下 系统滴答的初始化代码 {//选择系统滴答的时钟//配置系统抵达的重装载值//当前值清零//打开中断使能//NVIC控制器//开启定时器 } 中断服务函数 {判断标志清楚标志执行操作。 }代码 #include SysTick.h u16 SysTick_us; u16 SysTick_ms;/******************************* 函数名SysTick_Init 函数功能初始化系统滴答选择外部时钟 函数形参u32 sysclk 系统时钟168MHZ 函数返回值void 备注开启1ms中断********************************/ void SysTick_Init(u32 sysclk) //168MHZ {u32 pri;//存储优先级合成函数返回的优先级SysTick-CTRL ~(12); //选择外部时钟必须清零默认是1内核时钟SysTick_ussysclk/8; //21 1us//外部时钟8分频SysTick_msSysTick_us*1000; //21 000 1msSysTick-LOAD SysTick_ms-1;//重装载值21000-1SysTick-VAL0; //清空计数器,清标志位SysTick-CTRL |11; //使能中断 /*-----------------------配置NVIC---------------------------------------------*/ priNVIC_EncodePriority(7-2,1,2);NVIC_SetPriority(SysTick_IRQn,pri);NVIC_EnableIRQ(SysTick_IRQn);SysTick-CTRL |10; //使能计数器 }/******************************* 函数名SysTick_Delay_us 函数功能系统滴答实现us延时 函数形参u32 nus 函数返回值void 备注 //因为LOAD为24位所以最大重装载值16,777,216 最长时间形参最大值798,915us********************************/ void SysTick_Delay_us(u32 nus)//1us {SysTick-LOAD nus*SysTick_us;//传进来的参数*21 nus 传多少就是多少微秒SysTick-VAL0; //清空计数器,清标志位SysTick-CTRL |10; //使能 while(!(SysTick-CTRL 116));//等待计数完成SysTick-CTRL ~(10); //关闭计数器SysTick-VAL0; //清空计数器,清标志位 }/******************************* 函数名SysTick_Delay_ms 函数功能系统滴答实现ms延时 函数形参u32 nms 函数返回值void 备注 形参最大值798ms ********************************/ void SysTick_Delay_ms(u32 nms) {SysTick-LOAD nms*SysTick_ms;//传进来的参数*21 nms 传多少就是多少毫秒SysTick-VAL0; //清空计数器,清标志位SysTick-CTRL |10; //使能 while(!(SysTick-CTRL 116));//等待标志位到SysTick-CTRL ~(10); //关闭计数器SysTick-VAL0; //清空计数器,清标志位 }//.h #ifndef _SYSTICK_H #define _SYSTICK_H #include stm32f4xx.h #include Nvic.h void SysTick_Init(u32 sysclk); //168MHZ void SysTick_Delay_us(u32 nus);//1us void SysTick_Delay_ms(u32 nms);//1ms #endif//中断服务函数/******************************* 函数名SysTick_Handler 函数功能系统滴答的中断服务函数函数 函数形参无 函数返回值void 备注1ms进一次中断 ********************************/ void SysTick_Handler(void) {static u8 i100;while(SysTick-CTRL (116))//检测中断标志同时也是清除标志位mtime--;Led_cnt;_TIMER_1MS;i--;if(i0){i 100;_TIMER_100MS ;} } 总结 系统滴答就是一个系统内的定时器其主要作用就是提供精确延时以及计时的功能可以借此实现时间片轮询的代码框架。
http://www.w-s-a.com/news/602684/

相关文章:

  • 网站开发专业都有哪些课程广州安全教育平台账号找回
  • 网站调整方案适合平面设计师的网站
  • 免费服务器建立网站用html5做的旅游网站代码
  • 学校英语网站栏目名称WordPress禁用邮件注册
  • 手机qq网页版网站沧州手机网站开发
  • 深圳罗湖网站设计公司建设的网站属于无形资产吗
  • 网站开发python西安网站建站品牌
  • 网站开发商标属于哪一类做网站还有钱赚吗
  • 做设计的搜素材上什么网站好设计公司画册设计哪家好
  • 视频网站开发需要什么语言做ui设计一年后年薪多少
  • 网站服务器维护费用统一企业官方网站
  • 网站如何调用手机淘宝做淘宝客呼和浩特网站运营公司
  • 做推广可以上那些网站网页游戏排行榜2014前十名
  • 国外网站备案流程企业网站 流程
  • 重庆网站建设letide童程童美少儿收费价目表
  • 苏州建站仿站东莞排名推广
  • 大中小网站的区分wordpress个人主页主题
  • 商务网站建设的可行性分析包括小程序源码网免费
  • 永州网站建设收费标准重庆网站建设公司夹夹虫专业
  • python做网站多少钱wordpress 2.8
  • 深圳网站平台网站开发工作程序怎么写
  • 自己可以接单做网站吗wordpress 添加自定义按钮
  • 网站首页权重宣传页制作
  • 智能网站建设软件有哪些方面网页的建设
  • 石铜路网站建设生鲜电商网站开发
  • 怎么提高网站加载速度慢网站的轮播怎么做的
  • 网络网站推广优化建筑工程教育网官方网站
  • 旅行社网站策划做网站编辑好还是美工好
  • 珠海做网站找哪家好在线磁力搜索神器
  • 做网站优化有必要wordpress导航栏字体