当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪ARM M0+各种定时器驱动的编写      systick 系统滴答时间。这个定时器之前的文章已经讲过。这个是一个递减的定时器,有个模数寄存器。在此不多说。就是一个系统的模块,这个模块是集成在ARM M0+内核中的,其实主要是集.........
    ▪组成Spring框架的7个模块                  Spring框架由7个模块组成,这七个模块为我们提供了企业级应用所需要的一切,我们可以自由选择使用其中的模块。事实上Spring提供了与其他.........
    ▪深入理解单例模式(Singleton Pattern)              单例模式就是一个类或者值能够被应用程序全局访问,并且始终是初始化创建的那个实例。单例模式是属于创建模式的范畴,它比较简单,但是,需要注意几个细节。.........

[1]ARM M0+各种定时器驱动的编写
    来源: 互联网  发布时间: 2013-11-19

systick

系统滴答时间。这个定时器之前的文章已经讲过。这个是一个递减的定时器,有个模数寄存器。在此不多说。就是一个系统的模块,这个模块是集成在ARM M0+内核中的,其实主要是集成在NVIC 中的,NVIC也是ARM 内部模块,该模块的定时器,用该模块的时钟源来使能该定时器。以及模数计数器。总共只有四个寄存器。控制状态寄存器:主要包含一个COUNTFLAG 中断标志位,当计数器计数到0的时候标志该位,CLKSOURCE :可选择时钟源,默认为内核始终,有的厂家还会提供其他外设始终。TICKINT中断使能位,ENABLE计数器使能位。

RVR重载寄存器:每次计数器计数到0 的时候,都重载该值。

CVR计数器的值,记录当前的值。

CALIB校准寄存器:有的厂家将计算好的10ms的ticks值放入该寄存器。也就是说是厂商决定的,厂商烧入,则有,没有设置则没有。

TPM

这个寄存器是递增的。有三个模块,

分为主计数器,和通道计数器,也就是相当于一个计数器,分一个主模数,一个次模数。状态和控制寄存器(SC)中,通过CMOD 可以选计数的模式通过该计数模式可以选择时钟,是选择模块时钟还是选择时钟失效,还是选择异步外设时钟,。再经过PS分频,2(PS次幂)代表分频值,即将该时钟降频。   CPWMS:中心对齐PWM选择(即计数器的计数模式,这个也算该计数器的一个特色吧。比如一般来说计数器是1,2,3,4,5, 然后1,2,3,4,5 。通过该位置1,可以设置成1,2,3,4,5,4,3,2,1)。所以置1只能配出中央对齐的PWM.

该定时器有一个总的MOD模数值,该值用来控制该模块的一个总的中断请求置状态寄存器的TOF位,当计数器达到该值时,该请求。当然一定有一个中断使能位,就是TOIE中断使能位,。两个值一并即触发了中断服务历程。

TPM的分通道。每个模块也有自己的模数寄存器的值。就相当于,主计数器模数是5,从1数到5,通道模数是3,即从1数到3的时候就出发了通道相应的事件。

其实也就是说通过将该模块的计数值。当前通道通过一定的配置 ,根据计数器来进行相应的处理。通道中分为MSnB:MSnA该位控制模式的。ELSNB:ELSNA该两位控制的是边沿和等级。模式有0:输入捕捉(01上升沿,10下降沿,11上升或下降捕捉),1,输出比较(在通道的模数值和计数器的值相等的时候,01翻转电平,10清除电平即置0,11设置电平即置1),2边沿对其PWM(10重新加载的时候是高电平,匹配的时候是低电平,即先高后低,01或11先低电平后高电平),11输出比较(10在匹配的时候打出低电平,X1在匹配的是打出高电平)。后面两种其实是一种,不同的就是在重新加载计数器的时候是否有操作。

每个通道都有一个状态控制寄存器和模数值,包含一个标志通道的中断的标志位,该标志位每个通道都有,还有一个中断使能位,还有就是刚才提到的模式控制和边沿控制,外加一个DMA使能。

模数值和计数器的模数值一样都是16位的,

由于一个模块的通道都比较多,每个通道虽然都有这个中断标志,但是,模块中断只有一个,所以KL25有一个寄存器STATUE将总中断标志位TOF,和每个通道的中断标志位,都映射到一个寄存器中,这个标志都是写1清0的。

有CONFIG配置寄存器,配置计数器的模式,以及时钟源,以及触发方式,比如让计数器不计数,等到输入捕捉到一个上升沿就开始捕捉。等等。还有在调试模式和在等待模式下用的时间基数。

根据以上寄存器的功能可以配置一下的几种功能:

输入捕捉:一般用于编码器

采集输入脉冲的上升沿,下降沿或者上升沿下降沿都采集。采样周期得是计数器时钟的1/4。这其中还涉及到一个Nyquist定律。输入捕捉的时候,CnV就没有用了。

 

输出捕捉功能:一般用于打出方波波形,比如步进电机需要的方波波形

即只有在通道值和模块的计数器的值相等的时候,会操作,可以翻转,默认高,或者默认低。该脉冲周期是计数器周期的两倍

边沿对其的PWM;即在上面的输出比较功能的基础上添加在重载计数器的值得时候进行设置。形成方波脉冲波形。

中心对其的PWM:这个就比较复杂了。周期是模数的两倍。就是1,2,3,4,5,模数是5 ,通道的模数是3 ,当开始和结尾的时候有一次溢出中断,总中断,当1数到3的时候触发一次通道中断,当3数到5 再从5数到3的时候又触发一次通道中断,然后再从3数到1.

 

PIT:  PIT有两个定时器,两个定时器可以连到一起去的。

该计数器的值和上面不一样,它是倒序的,跟systick有点像,从一个值往下递减,减到0的时候重新加载。该定时器还有两个寄存器表示生命周期,可以用来计算该计算机运行了多久,多长时间,对了,该定时器还有一个功能,就是累加(chain)也可以说连接吧,就比如KL25里面有2个TIMER,当第一个TIMER达到0的时候,第二个TIMER减1.

控制寄存器CR也没有几个功能,就是一个模块使能。和一个freeze

每个定时器都有以下的值:

PIT加载值,该值就是该计数器数到0的时候重新加载的值,

PIT当前值:计数当前计数器的值,

PIT时间控制寄存器。可以设置chain累加到前面一个计数器。timer0肯定没有这个功能。TIE中断使能位,TEN时钟使能。

PIT标志位:该位标志了计数器的值达到timer

LPTMR

低功耗定时器:

一共有四个寄存器:控制状态寄存器。预分频寄存器,比较值寄存器,计数寄存器

该定时器可以用外部的脉冲来进行使能,一共有4个外部引脚。

控制寄存器:TCF:定时器比较标志,

                       TIE:中断使能             TPS外部引脚使能    TPP引脚极性(上升沿递增,下降沿递增)  TFC当计数器的值在TCF的时候复位,或者溢出复位。

           TMS:时钟模式选择,定时器或者外部脉冲

TEN:定时器使能。

预分频寄存器:分配值,有2~65535     预分频时钟选择:PCS:与四个外部引脚相对应

比较值寄存器:比较寄存器,存储该值。

RTC:(实时时钟)

 

一共有8个寄存器:秒计数器:闹钟定时器,预分频寄存器,补偿寄存器,控制寄存器,状态寄存器,锁定寄存器,中断使能寄存器:

秒计数器TSR:1s递增一次

闹钟定时器TAR:当TSR达到TAR的值得时候,触发中断。

预分频寄存器,该值是对于32.768晶振来起作用的。预分频晶振的值。

补偿寄存器:可以对预分频进行设置,可以+-127进行配置。

控制寄存器,根据晶振的电容,CLKO晶振使能。OSCE晶振使能。

 

状态寄存器,锁定寄存器,中断使能寄存器:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

作者:lt6210925 发表于2013-5-7 23:13:47 原文链接
阅读:1 评论:0 查看评论

    
[2]组成Spring框架的7个模块
    来源: 互联网  发布时间: 2013-11-19

            Spring框架由7个模块组成,这七个模块为我们提供了企业级应用所需要的一切,我们可以自由选择使用其中的模块。事实上Spring提供了与其他框架和库的集成点,因此我们可以自由使用。但是《Spring in Action 第二版 中文版》中没有具体说明是有那七个模块组成,只是给出了一幅图,并对图中的每个模块做了一段解释。附图如下:深色部分是我自己加的,因为《Spring in action》中没有具体指出是哪个7个模块,所以我在网上查资料查到的结果是这7个模块就是我所标注的这7个深色的部分。

      这里我选择其中两个模块给予说明,其他的请参考《Spring in Action 第二版 中文版》第一章。

      Core:(核心容器)是Spring的核心容器,它为Spring框架提供了基础功能,他是最基本的Spring容器和Spring的DI所依赖的基础。其核心类是BeanFactory。

      Context:(上下文模块)Spring的应用上下文建立在核心容器至上。如果说核心模块中的BeanFactory使Spring成为了容器的话,那么上下文模块就是使Spring成为框架的原因。这个模块的核心类是ApplicationContext,他扩展了BeanFactory,添加了对国际化,应用声明周期事件以及验证的支持,另外,这个模块还提供了许多企业级服务,如电子如见服务,JNDI访问,EJB继承,远程调用以及定时服务,并支持与模块框架(如Velocity和FreeMarker)的集成。一般我们的应用程序都是在这个基础上进行开发的。

作者:liangzi4454 发表于2013-5-8 11:11:40 原文链接
阅读:0 评论:0 查看评论

    
[3]深入理解单例模式(Singleton Pattern)
    来源: 互联网  发布时间: 2013-11-19

        单例模式就是一个类或者值能够被应用程序全局访问,并且始终是初始化创建的那个实例。单例模式是属于创建模式的范畴,它比较简单,但是,需要注意几个细节。

       

class DreamFactory{
      //lazy instantiation
    private static DreamFactory dream = null;

    protected static DreamFactory getInstance(){
        if(dream == null){
            synchronized(DreamFactory.class){
                return new DreamFactory();
            }
        }
        return dream;
    }

    protected DreamFactory(){
        System.out.println("Lazy instantiation ............");
    }
}

     

public class Singleton {


    public static void main(String []args){
//        Miracle.getInstance();
        DreamFactory.getInstance();
    }
}
    上面这个例子,采用了延迟初始化技术来创建单例。这种技术确保了单例在需要时才创建。另外, DreamFactory使用是protected 构造方法,这样确保了客户端不能实例化DreamFactory。有几点需要注意:这种实现方式不是线程安全的(修要加上synchronized才能保证去安全性)。另一种实现方式就比较简单、高效、线程安全。

class Miracle{
    static Miracle miracle = new Miracle(); //early instantiation
    protected static Miracle getInstance(){
        return miracle;
    }
    Miracle(){
        System.out.println("-----Change your mind and work for your dream------------");
    }

    protected void makeEffort(){
        System.out.println("----Make a great effort for my dream----------");
        System.out.println("----Never forget my dream for every moment------");
    }

    protected void persistInDoing(){
        System.out.println("------Do it day and night------");
    }

    protected void study(){
        System.out.println("------Study and overcome every difficulty-----------------");
    }
}


作者:GreatElite 发表于2013-5-8 14:20:16 原文链接
阅读:46 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3