定時器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;//晶振設置爲32KHz
while(CLKCONSTA&0x40);//等待晶振穩定
CLKCONCMD&=0x07;//主時鐘頻率32KHz
CLKCONCMD|=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_0
PERCFG|=0X40;//備用位置2
P2SEL&=~(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中文數據手冊完全版》