查看: 1057|回复: 0

【SAMV71 XPlained】+MDK 5.1+TC(定时器)

[复制链接]

该用户从未签到

发表于 2015-12-15 13:24:06 | 显示全部楼层 |阅读模式
分享到:
第一次使用ATMEL 的cortex  M系列产品,开始还有点担心会不会很难上手,从昨天开始接触samv71总体感觉很好,安装开发环境和下载第一个程序到板子里都很顺利,板载的EDBG仿 真器也很给力,非常易用。虽然samv71的开发的库和stm32的有很大的差异,但是还是人容易看懂,在昨天的Getting Started  Example试验例程中,有涉及到定时器的使用,所以本节讲讲SAMV71的定时器(TC).
      
        SAM71V内部有3个TC模块,这个3个定时器具有相同功能。每个TC可以独立编程来执用来执行:频率测量、计数、时间间隔测量,脉冲生成、延时和脉冲 宽度调制(PWM)。每个通道有三个外部时钟输入源,五个内部时钟输入和两个多功能输入/输出信号,这些都是可以用户配置。每个通道驱动器内部可编程中断 信号生成处理器中断,定时器内部嵌入了正交解码器(QDEC),TIOA0, TIOB0 和TIOB1  做信号输入,使能了这个功能后正交解码器会对输入的信号进行滤波,测量电机的准确位置。
      
SAMV71的定时器的特性:
1.总共有12个定时器通道
2.TC的分辨率为16位
3.包含的功能:
                a.频率测量
                b.事件计数
                c.时间间隔测量
                d.脉冲发生器
                e.延时
                f.正交解码器
                g.PWM
                h.增减计数
                i.步进电机脉冲计数
4.内部中断源
5.可以通过DMAC读取比较寄存器的值
6.寄存器写保护
7.比较时间错误的时候出生PWM
定时器的框图

  
上一节 中的定时器配置如下,在配置TC时首先需要使能PMC->电源管理控制定时器,也就是需要使能TC的外设时钟。



  • static void _ConfigureTc(void)
  • {
  •      uint32_t div;
  •      uint32_t tcclks;

  •      /** Enable peripheral clock. */
  •      PMC_EnablePeripheral(ID_TC0);    //使能TC0的时钟
  •      /** Configure TC for a 4Hz frequency and trigger on RC compare. */
  •      TC_FindMckDivisor( 4, BOARD_MCK, &div, &tcclks, BOARD_MCK );   //获取MCK的分频系数

  •      TC_Configure( TC0, 0, tcclks | TC_CMR_CPCTRG );
  •      TC0->TC_CHANNEL[ 0 ].TC_RC = ( BOARD_MCK / div ) /  4;         //TC0的时钟频率为<span style="line-height: 1.5;">BOARD_MCK  / div</span><span style="line-height: 1.5;">  </span><span style="line-height: 1.5;">,                                                                                //TC0的重载值</span>
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

手机版|小黑屋|与非网

GMT+8, 2024-11-19 02:42 , Processed in 0.117594 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.