|
第一次使用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>
复制代码
|
|