ZigBee無線傳感——CC2530單片機定時器1PWM輸出

定時器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中文數據手冊完全版》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章