采用飛思卡爾Freedom開發(fā)平臺(tái)的觸摸界面(2)
時(shí)鐘超出范圍
本文引用地址:http://www.biyoush.com/article/142532.htm到現(xiàn)在為止,我們已經(jīng)從接口談到了TSI模塊、PORT模塊和GPIO模塊。因此,我們還沒準(zhǔn)備好開始設(shè)置滑塊嗎?是的,因?yàn)槲覀冞€有一個(gè)更加重要的細(xì)節(jié)需要考慮。作為低功耗的片上系統(tǒng)(SoC)部件,Kinetis MCU可以通過關(guān)閉未使用的片上外設(shè)來(lái)降低功耗。這個(gè)關(guān)閉步驟其中就涉及到切斷所提及外設(shè)的時(shí)鐘信號(hào)?;謴?fù)閑置外設(shè)的狀態(tài)需要重新啟用這個(gè)信號(hào)。時(shí)鐘信號(hào)和其他MCU系統(tǒng)配置其他方面的控制都通過系統(tǒng)集成模塊(SIM)的18個(gè)寄存器加以處理。在默認(rèn)狀態(tài)下,當(dāng)MCU上電時(shí),大多數(shù)外設(shè)時(shí)鐘信號(hào)都被禁用。此外的關(guān)鍵要點(diǎn)在于,如果我們沒有啟用GPIO模塊的時(shí)鐘信號(hào),我們?cè)趪L試?yán)盟鼈儠r(shí)會(huì)毫無(wú)進(jìn)展。注意一些開發(fā)工具運(yùn)行時(shí)初始化密碼會(huì)自動(dòng)啟用所有外設(shè)時(shí)鐘。然而,CodeWarrior工具不會(huì)這樣,因此你必須自己管理這個(gè)功能。
仔細(xì)閱讀參考手冊(cè)中的系統(tǒng)集成模塊(SIM)一章,可以很容易找到系統(tǒng)時(shí)鐘門控寄存器,然后確定哪一個(gè)寄存器管理TSI和GPIO模塊。結(jié)果如下,第5個(gè)時(shí)鐘門控寄存器(SIM_SCGC5)處理這兩種外設(shè)。這個(gè)寄存器位的位置和功能如圖4所示。注意關(guān)于TSI和低功耗定時(shí)器模塊,這個(gè)寄存器控制的位訪問的是模塊,而不是時(shí)鐘信號(hào)。但是,結(jié)果與禁用時(shí)鐘信號(hào)一樣:如果你無(wú)法訪問部件,然后你便不能使用它?! ?/p>
因此,如要設(shè)置TSI模塊和RGB LED以便使用,必須采取以下步驟:
1. 在SIM_SCGC5的恰當(dāng)位中寫入1,啟用端口B和端口D模塊的時(shí)鐘信號(hào)。(端口D模塊,如圖1所示,處理RGB LED的藍(lán)色部件。)同時(shí)將相應(yīng)的位中寫入1,啟用TSI模塊的位。
2. 將配置位寫入端口B引腳控制寄存器PORTB_PCR16和PORTB_PCR17,選擇模擬信號(hào)類型,并將引腳16和17與TSI模塊通道9和通道10耦合在一起。將配置位寫入到PORTB_PCR18、PORTB_PCR19和PORTD_PCR1寄存器,將它們定義為數(shù)字信號(hào),然后將這些引腳與LED線路耦合在一起。
3. 關(guān)于LED,將1寫入GPIOB_PDDR和GPIOD_PDDR的位,并將這些引腳設(shè)置為輸出。然后將1寫入GPIOx_PSOR寄存器適合的位,從面將LED切斷?;蛘?,將1寫入GPIOx_PCOR寄存器相同的位,從而將它打開。(LED為低位激活。)關(guān)于模擬電極信號(hào),只需讓TSI處理它們即可。
評(píng)論