(先記下來,以後看,說不定就會了呢)
問題很多,咱啥都不懂,能看出歡迎討論哈~
直接設定:
ta0cctl0 = ccie; // ccr0 interrupt enabled
ta0ccr0 = 1000;//意思是週期為1000ms=1hz
ta0ctl = tassel_2 + mc_1 + taclr; // 選擇時鐘源smclk,+遞增模式upmode:計時器遞增計數到 taxccr0+clear tar
間接?(利用封裝好的函式)
void smclk_xt2_4mhz(void)
while (sfrifg1&ofifg); // test oscillator fault flag
ucsctl6 &= ~xt2drive0; // decrease xt2 drive according to
// expected frequency
ucsctl4 |= sels_5 + selm_5; // smclk=mclk=xt2
}
再經過分頻,配置暫存器等等,來獲得所需要的時間的定時器???(暫存器的配置自己看手冊配)
smclk_xt2_4mhz();//設定smclk使用xt2, 頻率為4mhz
ucsctl5|=divs__32;//使用usc統一時鐘系統進行預分頻,將smclk進行32分頻
ta0ctl |=tassel_2 + mc_1 + taclr;//配置a0計數器,時鐘源smclk,上公升模式,同時清除計數器//*配置計數器
//tassel_2選擇了smclk,mc_1計數模式,,最後清零taclr
//ta0ex0 |= taidex_1;//a0計數器分頻,2分頻
ta0cctl0 = outmod_2 + ccie;//捕獲比較暫存器0輸出,輸出模式為2,同時使能定時器中斷(ccr0單源中斷),ccie捕獲比較暫存器的使能配置
ta0ccr0 = 5;//捕獲比較暫存器0//配置捕獲比較器
4mhz經過32分頻後得到125000hz,相當於得到的定時器中斷為(ta0ccr0/125000)s,在這裡就是1/25000s也就是25000hz乙個中斷週期?
計數器每次計數到ta0ccr0時產生中斷
附上中斷服務函式,然後不要忘了使能全域性中斷
gie實際上是cpu中的sr(status register)暫存器中的一位。sr(status register)暫存器主要用來記錄指令的工作狀態。
這句的意思是將sr的gie位設定為1,bis即bit set。
對應的關全域性中斷操作是
即將sr的gie位清除,置0。bic即bit clear。
基於msp430Timer A定時器的LED
相信學過430的朋友對timer a應該不陌生吧,反正我是難忘了,感覺學的比stm32的定時器都吃力啊,看起來簡單,但是,就是學起來吃力,怪我咯!閒話少說,今天我就來總結一下我學習timer a的痛苦經歷。首先,我們要知道timer a的基本結構吧 總結起來就兩點 16位的定時 計數器3個捕獲 比較...
msp430學習筆記之定時器A
1 定時器a 圖 1 定時器 a 2 定時器a 的四種計數模式 1.停止模式。2.增計數模式。產生兩個中斷標誌 當計數到跟taccr0 一樣的時候,就返回 0,重新計數。當計數到 taccr0 的同時產生乙個中斷標誌 ccifg 而當計數器溢位返回零的同時又同時產生乙個中斷標誌 taifg 如圖 圖...
MSP430 定時器輸出PWM波形
硬體介紹 msp430系列微控制器的timera結構複雜,功能強大,適合應用於工業控制,如數位化電機控制,電表和手持式儀表的理想配置。它給開發人員提供了較多靈活的選擇餘地。當pwm 不需要修改占空比和時間時,timera 能自動輸出pwm,而不需利用中斷維持pwm輸出。msp430f16x和msp4...