0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍arm9时钟与定时器

GReq_mcu168 2018-02-07 08:38 次阅读

前言
这篇主要介绍arm9时钟定时器方面,根据s3c2440手册第七章的内容来看,涉及到不少的知识点,power管理、时钟、usb时钟、camera等,接下来只介绍时钟方面,其余部分以后再说

简介
系统时钟是整个电路的心脏,了解系统时钟结构对于后面学习定时器,UART等使用具有非常重要的作用,总体来说,与s3c2440处理器有关的时钟主要有4种: FIN, FCLK, HCLK和PCLK 1.FIN:外部输入晶振频率 2.FCLK: 主要用于CPU核 3.HCLK:主要用于与AHB总线互连的设备(如存储控制器, LCD控制器, 中断控制器及DMA等)上 4.PCLK:主要用于与APB总线互连的低速设备(如定时器, UART, ADB等)上

图解时钟
s3c2440处理器系统时钟分为两个部分, 外部有时钟输入引脚,内部用2个锁相环将外部输入时钟倍频到处理器工作说需要的时钟, 外部时钟频率太高容易受到外部的干扰,因此一般外部时钟频率比较低, 如下图:

介绍arm9时钟与定时器

介绍arm9时钟与定时器

介绍arm9时钟与定时器

■CLKDIVN:用于控制FCLK, HCLK和PCLK之间的比例关系

介绍arm9时钟与定时器

介绍arm9时钟与定时器

// LOCKTIME = 0x00ffffff; // 使用默认值即可,在下面会讨论CLKDIVN = 0x03; // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1/* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */__asm__("mrc p15, 0, r1, c1, c0, 0\n" /* 读出控制寄存器 */ "orr r1, r1, #0xc0000000\n" /* 设置为“asynchronous bus mode” */"mcr p15, 0, r1, c1, c0, 0\n" /* 写入控制寄存器 */); MPLLCON = ((0x5c<<12)|(0x04<<4)|(0x01))

上面代码注释中,关于LOCKTIME的赋值,这个又是怎么回事儿呢,还是根据手册

介绍arm9时钟与定时器

1

2

3

4

5

6

7

8

9

10

定时器 由上面可知,定时器是ABP总线设备,在PCLK的时钟频率下工作,s3c2440有5个16位定时器,定时器0,1,2,3有脉冲调制(PWM)功能, 因此这4个定时器也被称为PWM定时器,定时器4是一个内部定时器,无外部输出引脚,定时器的时钟源虽然是PCLK,但是还得通过内部的两个分频器分频后, 才能得到想要的工作频率,然后输出作为定时器的工作的时钟,定时器0,1公用一个分频器,其他3个定时器公用另一个分频器,如下图

介绍arm9时钟与定时器

定时器的工作原理描述,以定时器0为例: 1.首先,将TCMPB0,TCNTB0附初值 2.然后,设置定时控制器TCON,将TCON的第1位置1(手动更新位), 这样TCMPB0,TCNTB0赋值给TCMPB0,TCNTB0 3.启动定时器–>设置TCON第3位为1(当TCNT0的值减到0时,TCMPB0的值会自动加载到寄存器TCMP0和TCNT0中), 第0位为1(开启定时器) 4.此时,定时器会减1计数, 即TCNT0进行减1计数, 当TCMP0与TCNT0相等时, TOUT0翻转 之后介绍一下相关的寄存器在手册中的定义: ■TCON:对于定时器0来讲:

介绍arm9时钟与定时器

定时器的分频 前面提到了定时器0的使用方法,但是没有提到其最终的工作所需要频率(1s中能记多少个数)

介绍arm9时钟与定时器

介绍arm9时钟与定时器

介绍arm9时钟与定时器

void timer0_init(void) { TCFG0 = 99; // 预分频器0 = 99 TCFG1 = 0x02; // 选择8分频 TCNTB0 = 62500; // 1秒钟触发一次中断 TCMPB0 = 0; TCON |= (1<<1);   // 手动更新(将TCNTB0,TCMPB0更新入TCNT0, TCMP0)    TCON   = 0x09;      // 自动加载,清“手动更新”位,启动定时器0  }

PWM功能 对于定时器0来讲,上面的例子中TCNT0 1s内减到0,则TOUT0反转(电平变化), 但是定时器0还有个特性,就是如果TCNT0减到与比较值TCMP0相等,则TOUT0也发生反转,也就是说上面的例子将 TCMPB0 改成31250后,则TCNT0从62500减到31250(与TCMP0相等)TOUT0发生一次反转(用时0.5s),TCNT0减到0又发生反转(用时0.5s),这样,1s内发生两次反转,如此循环,输出引脚0.5s反转一次,即占空比50%(波形0.5秒为高电平,0.5秒为低电平这样循环的波形)

void timer0_init(void) { TCFG0 = 99; // 预分频器0 = 99 TCFG1 = 0x02; // 选择8分频 TCNTB0 = 62500; // 1秒钟触发一次中断 TCMPB0 = 31250; TCON |= (1<<1);   // 手动更新(将TCNTB0,TCMPB0更新入TCNT0, TCMP0)    TCON   = 0x09;      // 自动加载,清“手动更新”位,启动定时器0  }

注意,如果将上面代码TCMPB0=31250,改为别的值,比如TCNTB0 /4,则输出的波形一定发生变化(比如0.25秒为高电平,0.75s为低电平这样循环的波形),即占空比也发生变化,这就是所谓的PWM功能

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • arm9
    +关注

    关注

    2

    文章

    290

    浏览量

    54755
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130295
  • 定时器
    +关注

    关注

    23

    文章

    3143

    浏览量

    111996

原文标题:深入时钟与定时器

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    构造廉价的Arm9 开发平台

    。但由于市面上的Arm9开发板价格不菲,使不少想学习Arm9开发技术的朋友望而却步,其中有一大部分是各大高校的学生。本文阐述了改造ipTIME的IP0422路由,使其成为VxWorks和Linux
    发表于 10-31 17:56

    ARM9微控制与嵌入式无线网络实战

    将高性能、低功耗的ARM微控制与目前新兴的ISM波段短距离无线通信技术和各种新兴的无线网络技术相结合,将是未来嵌入式设计的一个“热点”。本书以ARM9微控制为基础,分别
    发表于 03-04 17:19

    不知ARM9的前途如何

    大侠,我现在学PIC,准备暑假转到ARM9,不知ARM9的前途如何?请多指教
    发表于 05-13 16:35

    arm9软件实现高精度计时是不是得把计数本身的时间考虑进去

    本人打算用arm9定时器实现一个高精度的计时:pclk理论上可以达到400MHz那么我的定时器最高就可以每2.5ns记数一次,那么问题来了,2.5ns计数精度非常高了,是不是就得把
    发表于 11-16 18:34

    高级定时器时钟来源是什么

    (1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器
    发表于 08-04 07:05

    stm32基本定时器介绍

    信号。基本定时器框图如下:二、时基单元介绍STM32的所有定时器都具备时基单元,时基单元的功能就是简单的计数,即计数时钟源TMxCLK的脉冲个数,这个
    发表于 08-18 06:15

    周期中断定时器、低功耗定时器与实时时钟介绍

    .第三章.基本模块.周期中断定时器,低功耗定时器,实时时钟0 目录3 基本模块3.3 周期中断定时器,低功耗定时器,实时
    发表于 11-08 06:59

    ARM9有哪些优势?为什么要选择ARM9

    stm32与和ARM7及ARM9三者之间有什么区别呢?ARM9有哪些优势?为什么要选择ARM9呢?
    发表于 12-15 06:25

    ARM9体系结构的相关资料分享

    7.Thumb指令集概况8.ARM指令集与Thumb指令集比较ARM9体系结构1.ARM命名ARM系列微处理扩展命名符号的含义2.
    发表于 12-20 07:47

    EPIT定时器与GPT定时器简单介绍

    EPIT定时器与GPT定时器简单介绍一、EPIT定时器1、EPIT定时器简介2、EPIT定时器
    发表于 01-06 07:46

    基本定时器与时基单元介绍

    信号。基本定时器框图如下:二、时基单元介绍STM32的所有定时器都具备时基单元,时基单元的功能就是简单的计数,即计数时钟源TMxCLK的脉冲个数,这个
    发表于 01-20 08:30

    SysTick系统定时器基本介绍

    (五)SysTick系统定时器1.SysTick(滴答)定时器1.1.基本介绍被嵌入在***NVIC***中断管理系统之中;是一个24位向下递减的定时器;计数一次的时间为1/SYSTI
    发表于 02-25 07:26

    时钟555定时器电路

    时钟555定时器电路
    发表于 01-17 14:08 2574次阅读
    <b class='flag-5'>时钟</b>555<b class='flag-5'>定时器</b>电路

    STM32定时器-基本定时器

    目录定时器分类基本定时器功能框图讲解基本定时器功能时钟源计数器时钟计数器自动重装载寄存器定时时间
    发表于 11-23 18:21 28次下载
    STM32<b class='flag-5'>定时器</b>-基本<b class='flag-5'>定时器</b>

    五、【中级篇】时钟树、定时器、中断

    RTC 24bit down count在ARM-CORTEX-M3核心中提供了定时器的资源:系统定时器(system timer | systick)无论是STM32提供的定时器
    发表于 01-14 15:44 6次下载
    五、【中级篇】<b class='flag-5'>时钟</b>树、<b class='flag-5'>定时器</b>、中断