2013-08-19 69 views
1

radiotimer.c中的行50-69表示稱爲「radiotimer_start()」的函數。radiotimer_start()C函數背後的邏輯是什麼?

如果我理解正確,此函數是爲MSP430 x26x硬件編寫的。

在抽象層次上,此函數啓動一個定時器(我相信)定期執行(傳入的參數)。但我根本無法理解這是如何工作的。

我想知道是否有來自社區的專家可以請我解釋一下這個函數的每一行是怎麼回事。

例如在線61:

TACCTL2 = CAP+SCS+CCIS1+CM_1; 

爲什麼增加這麼多的價值,什麼是「捕捉模式」?

說實話,這整個功能對我來說毫無意義。

如果其中一位來自社區的專家至少可以闡明如何確定這些代碼行正在做什麼,並且可能將其與計時器的啓動方式聯繫起來,我將不勝感激。

回答

4

該寄存器只是設置一堆位。 +在本質上是一個OR。該聲明可以被改寫爲:

TACCTL2 = CAP | SCS | CCIS1 | CM_1; 

每個的#define(CAP,SCS,CCIS1和CM_1)的信息應該是你正在使用的庫。他們設置的位顯示在您鏈接的文檔的第372頁。

CM_1例如指示在上升沿捕獲。

+0

感謝這開始讓我更有意義。所以基本上你只是說你或者標記你有興趣捕獲,比如CM_1。什麼是TACCTL2? – user1068636

+0

這是一個比較/捕捉控制寄存器。 http://www.mikroe.com/chapters/view/6/ 這會給你一個基本的想法。基本上所有的控制寄存器都控制着一個或多個東西開關設置佔用寄存器的所有16位是沒有意義的,所以它們只爲每個設置定義特定的位。 – cwhelms

+0

user1068636:'='的左側是一個控制寄存器。它是微控制器電子設備中的一個地方,寫入不同的值會產生不同的效果。在這種情況下,寄存器的不同_bits_有不同的效果。例如。將寄存器'TACCTL2'的'CAP'位設置爲1,以設置捕獲模式的定時器A比較/捕獲外設(而不是比較模式)。 '='的右邊表示要設置爲1的位,'='符號將它們應用於'TACCTL2'。 – Gauthier