定时器1(16位)
时器1是一个独立的16位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和PWM功能。
定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O引脚。定时器用于范围广泛的控制和测量应用,可用的五个通道的正计数/倒计数模式将允许诸如电机控制应用的实现。
定时器1功能介绍
1.五个捕获/比较通道
2.上升沿、下降沿或任何边沿的输入捕获
3.设置、清除或切换输出比较
4.自由运行、模或正计数/倒计数操作
5.可被1, 8, 32或128整除的时钟分频器
6.在每个捕获/比较和最终计数上生成中断请求
7.DMA触发功能
定时器1PWM输出相关寄存器
1.T1CTL(0XE4)-定时器1控制寄存器
2.T1STAT(0XAF)-定时器1状态寄存器
3.定时器1通道0捕获/比较高/低位寄存器(装初值)
4.定时器1通道2捕获/比较高/低位寄存器
5。T1CCTL2(0xE7)-定时器1通道2捕获/比较控制寄存器
6.PERCFG-(0XF1)-外设控制寄存器
7. P2SEL(0XF5)-P2端口功能选择和P1端口外设优先级控制寄存器
8. P1SEL(0XF3)-P1端口功能选择
9. P1DIR(0XFD)-P1端口方向
10.P2DIR(0XFD)-P2端口方向和P0端口外设优先级控制寄存器
配置步骤
PWM占空比D=【T2CCOH/T2CCOL装入比较值】除以【T1CCOH/T1CCOL寄存器】
1.配置外部设备控制寄存器PERCFG来选择定时器选择的位置。对应表7-1进行配置
3、配置定时器的优先级和定时器通道的优先级,针对选择的IO口,对应表7-1进行配置
4、最后进行定时器模式的设置,选择定时器的模式,这里选择定时器1模模式
5、在定时器1通道0寄存器(T1CC0H、T1CC0L)装入初值
6、选择捕获的通道,并装入比较值。注意:此时选择的通道必须对应所控制的I/O口
代码部分
**//定时器1初始化**
void TIM1_Init(void)
{/* CLKCONCMD&=~0X40;//晶振设置为32KHzwhile(CLKCONSTA&0x40);//等待晶振稳定CLKCONCMD&=0x07;//主时钟频率32KHzCLKCONCMD|=0x38;//250KHz*/T1CTL|=0X02;//不分频,模计数模式//T1CCTL0|=1<<2;//比较模式T1CCTL2|=0X34;//T1CC0H=0X00;//高八位T1CC0L=0XFA;//低八位 1ms 1KHz//装初值T1CC2H=0;T1CC2L=0;//装比较值P1SEL|=1<<0;//将定时器1通道2映射到P1_0PERCFG|=0X40;//备用位置2P2SEL&=~(1<<4);//TIM1优先P2DIR|=3<<6;//通道2优先P1DIR|=1<<0;//输出}
**//IO初始化**
void TIM_IO_Init(void)
{P1SEL&=~(1<<0);//定时器1通道2映射到P1_0 外设P1DIR|=0X01;//配置P1_0输出}
**//主函数**
unsigned char pwm=0;//装入通道2比较值
void main(void)
{TIM1_Init();//定时器1初始化TIM_IO_Init();//io口初始化for(;;){//编写自己代码修改pwmdate的值T1CC2H=(u8)(pwmdate<<8);//取高八位T1CC2L=(u8)(pwmdate&0XFF);//取低八位}}
以上教程仅供刚上手cc2530单片机的小白学习,希望对大家有所帮助,写得不好勿喷啦!
附:参考资料《CC2530中文数据手册完全版》