【BLE】CC2541之timer3

一、简介

本篇以定时器timer3为例,讲述如何配置寄存器才能输出一个20us的方波。


二、实验平台

协议栈版本:BLE-CC254x-1.4.0

编译软件:IAR 8.20.2

硬件平台:Smart RF开发板


三、版权声明

博主:甜甜的大香瓜

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.net/feilusia

联系方式:[email protected]

技术交流QQ群:127442605


四、简介timer3和timer4

1、位数

timer3和timer4都是8位的定时器。


2、通道

各自都有两个独立的捕获/比较通道,而每个通道都有自己对应的IO口。

【BLE】CC2541之timer3_第1张图片


3、分频

支持1、2、4、8、16、32、64、128分频


4、控制模式:

1)Free-Running Mode

计数器从0x00开始,在每个有效的时钟周期边沿触发加1,加到0xFF即会触发定时器中断(如果已使能了定时器中断)、数值回0重计、对应IO口通道电平变化。


2)Down Mode

计数器从TxCC0开始,在每个有效的时钟周期边沿触发减1,减到0x00即会触发定时器中断(如果已使能了定时器中断)、对应IO口通道电平变化。

注意,这个模式下从TxCC0减到0,就不再重复减的操作了。


3)Modulo Mode

计数器从0x00开始,在每个有效的时钟周期边沿触发加1,加到TxCC0即会触发定时器中断(如果已使能了定时器中断)、数值回0重计、对应IO口通道电平变化。


4)Up/Down Mode

计数器从0x00开始,在每个有效的时钟周期边沿触发加1,加到TxCC0后,在每个有效的时钟周期边沿触发减1。 

最终减到0时即会触发定时器中断(如果已使能了定时器中断)、对应IO口通道电平变化。


5)Channel Mode Control(没用过,不解释……)

6)Input Capture Mode(没用过,不解释……)

7)Output Compare Mode(没用过,不解释……)


五、10us方波的实现原理

1、配置成32分频

32M外部晶振,timer3使用经过32分频的1M晶振。

所以定时器的时钟周期=1/1M=1us。

也就是每1us,定时器就会计数加、减1。


2、配置成Up/Down Mode、T3CC0=10

这样定时器会从0计数到5、再从10计数到0,一共计数20次。


3、配置输出为定时器到时即翻转IO口


以上3点,即可实现20us翻转一次io口。


六、参考代码

void Gua_Init(void)  
{  
    PERCFG |= 0x20;             // Timer 3 Alternate location 2  
    P1DIR |= 0x40;              // P1_6 = output  
    P1SEL |= 0x40;              // Peripheral function on P1_6  
  
    T3CTL &= ~0x10;             // Stop timer 3 (if it was running)  
    T3CTL |= 0x04;              // Clear timer 3  
    T3CTL &= ~0x08;             // Disable Timer 3 overflow interrupts  
    T3CTL |= 0x03;              // Timer 3 mode = 3 - Up/Down  
    T3CTL |= 0xA0;              // 32分频  
  
    T3CCTL0 &= ~0x40;           // Disable channel 0 interrupts  
    T3CCTL0 |= 0x04;            // Compare mode  
    T3CCTL0 |= 0x10;            // Ch0 output compare mode = toggle on compare
  
    T3CC0 = 10;                  //上限值设置为10  
  
    T3CTL |= 0x10;             // start timer 3  
}  

七、实验结果

【BLE】CC2541之timer3_第2张图片

ps:示波器抓p1.6脚的波形

你可能感兴趣的:(【BLE】CC2541之timer3)