最近再用cc2530做pwm調光,使用到了定時器的輸出比較功能,cc2530的定時器配置比較簡單,只需要配置幾個暫存器就能夠實現了。
本人把定時器比較輸出功能當做pwm發生器來使用,大體思路是當定時器的計數值小於比較暫存器的設定值時,定時器比較輸出埠電平保持不變,而當定時器的計數值等於或大於比較暫存器的設定值時,定時器比較輸出埠的電平發生翻轉,因此需要在乙個定時器週期內調節比較暫存器的設定值就能夠完成對輸出波形的占空比的修改,從而實現pwm無級調光。
以定時器4、輸出埠為p2.0口為例,想要通過定時器3完成比較輸出功能需要配置t4cctl0暫存器、t4cc0暫存器、t4ctl暫存器。可以通過檢視資料手冊得知p2.0埠為定時器第0通道(第二位置),因此需要配置percfg暫存器、p2sel暫存器。
percfg暫存器是乙個8位暫存器,主要用於配置定時器、串列埠的復用引腳。位名稱
復位值讀寫許可權配置4
t4cfg
0讀/寫
配置定時器4的復用引腳--
----
--p2sel暫存器是乙個8位的暫存器,主要用於配置p2埠的功能以及埠1的外設控制優先順序。位名稱
復位值讀寫許可權配置0
selp2_0
0讀/寫
配置p2.0引腳的功能--
--0 :配置p2.0為通用io口--
--1 :配置p2.0為外設引腳
t4ctl是乙個8位暫存器,主要用於進行定時器4的時鐘分頻、執行模式、計數器復位、定時器啟動、溢位中斷使能等功能的配置。位名稱
復位值讀寫許可權
配置7:5
div[2:0]
000讀/寫
定時器分頻係數--
--000 :系統時鐘1分頻--
--001 :系統時鐘2分頻--
--010 :系統時鐘4分頻--
--011 :系統時鐘8分頻--
--100 :系統時鐘16分頻--
--101 :系統時鐘32分頻--
--110 :系統時鐘64分頻--
--111 :系統時鐘128分頻
4start
0讀/寫
定時器啟動標誌--
--0 :關閉定時器--
--1 :開啟定時器
3ovfim
1讀/寫
定時器溢位中斷使能標誌--
--0 :關閉定時器溢位中斷--
--1 :開啟定時器溢位中斷
2clr
0讀/寫
定時器計數值清除位,讀取該位時只能讀到0--
--0 :無效--
--1 :清除定時器計數值
1:0mode[1:0]
00讀/寫
定時器工作模式配置--
--00 :自由執行,從0x00到0xff反覆計數--
--01 :向下計數模式,從t3cc0到0x00計數--
--10 :向上計數模式,從0x00到t3cc0反覆計數--
--11 :上下計數模式,從0x00到t3cc0在到0x00反覆計數
t4cctl0是乙個8位的暫存器,主要用於定時器4通道0的輸入捕獲、輸出比較功能的控制。位名稱
復位值讀寫許可權配置7
-0讀保留
6im1讀/寫
定時器通道中斷使能標誌--
--0 :關閉該通道中斷--
--1 :開啟該通道中斷
5:3cmp[2:0]
000讀/寫
配置該通道比較輸出功能的工作模式--
--000 :在比較(定時器計數值小於比較暫存器設定值時)輸出高電平--
--001 :在比較(定時器計數值小於比較暫存器設定值時)輸出低電平--
--010 :在比較(定時器計數值小於比較暫存器設定值時)翻轉輸出電平--
--011 :在比較正計數時輸出高電平,在0輸出低電平--
--100 :在比較正計數時輸出低電平,在0輸出高電平--
--101 :在比較(定時器計數值小於比較暫存器設定值時)輸出高電平,在0xff輸出低電平--
--110 :在0x00輸出高電平,在比較(定時器計數值小於比較暫存器設定值時)輸出低電平--
--111 :初始化輸出引腳,cmp[2:0]不變
2mode
0讀/寫
定時器通道模式選擇--
--0 :該通道工作在輸入捕獲模式--
--1 :該通道工作在輸出比較模式
1:0cap[1:0]
00讀/寫
配置該通道輸入捕獲功能的工作模式--
--00 :關閉捕獲功能--
--01 :開啟上公升沿捕獲--
--10 :開啟下降沿捕獲--
--11 :開啟雙邊沿捕獲
t4cc0暫存器是乙個8位暫存器,在比較輸出模式中主要作為比較設定值的來使用。位名稱
復位值讀寫許可權
配置7:0
val[7:0]
0x00
讀/寫在比較輸出功能中主要作為比較設定值來用
#include
void timer4_pwm_init( void )
int main( void )
[1]. cc2530資料手冊 CC2530定時器配置筆記1(基本定時功能配置)
cc2530有2個8位的定時器,它們分別是定時器3和定時器4。相較於傳統51微控制器的8位定時器來說,cc2530上的定時器具有輸入捕獲 輸出比較 定時器計數方向可變等幾個特點。以定時器3為例,想要通過定時器3進行計時操需要配置t3ctl暫存器 ien1暫存器 timif暫存器。t3xtl是乙個8位...
CC2530定時器應用 隨記
關於cc2530定時器1和定時器3的使用一般如果題目 現有乙個現象在持續進行並且會伴隨其他的現象出現,這時候就應該考慮定時器的使用了,2530中的定時器有5個,但是常用的就兩個定時器1和定時器3,它們代表了兩種不同的定時器,定時器1是乙個16位定時器,而定時器3是乙個8位定時器,但是使用時沒有太大的...
cc2530 睡眠定時器串列埠顯示
cc2530 睡眠定時器串列埠顯示 第12次次課 睡眠定時器方式喚醒 體會1 切換系統主時鐘16mhz和32mhz 體會2 當串列埠波特率比較高時候 19200 亂碼多,降低後 9600 穩定,主要是因為雙方硬體時鐘不精確 include typedef unsigned char uchar ty...