task
上一節中提到了延時函式,延時函式的基本原理就是cpu每執行一條語句需要一定固定的時間,而提供這個時間基準的就是微控制器的時鐘訊號。
時鐘訊號**於一定的時鐘源,它們是時鐘源經過被選擇和分頻產生的。時鐘源由一定的硬體電路產生,例如晶振和其他各種振盪器。時鐘源類似於人體的心臟、汽車的發動機。
而在g2553中共有3種時鐘源和3種時鐘訊號
g2553的時鐘源:
g2553的3種系統時鐘訊號:
需要注意:
dco是數字振盪控制器,因此dco的頻率可以通過軟體程式賦值相應暫存器來控制,所以基本時鐘配置所涉及到的範圍大概為:dco時鐘源的頻率配置;各時鐘訊號選擇何種時鐘源;需要做怎樣的分頻。
dco頻率配置
其他基本配置
對於其他基本時鐘暫存器配置及功能可見使用者指南280~284頁。
舉例
#include
void
delay_ms
(unsigned cnt)
}int
main
(void)
dcoctl =0;
// select lowest dcox and modx settings
bcsctl1 = calbc1_1mhz;
// set range
dcoctl = caldco_1mhz;
// set dco step + modulation */
/*//8mhz
if (calbc1_8mhz==0xff) // if calibration constant erased
dcoctl = 0; // 設定dcox和modx
bcsctl1 = calbc1_8mhz;
dcoctl = caldco_8mhz; // 設定dco頻率為8m */
/* //12mhz
if (calbc1_12mhz==0xff) // if calibration constant erased
dcoctl = 0; // select lowest dcox and modx settings
bcsctl1 = calbc1_12mhz; // set range
dcoctl = caldco_12mhz; // set dco step + modulation*/
/*//16mhz
if (calbc1_16mhz==0xff) // if calibration constant erased
dcoctl = 0; // select lowest dcox and modx settings
bcsctl1 = calbc1_16mhz; // set range
dcoctl = caldco_16mhz; // set dco step + modulation*/
bcsctl1|
=diva_3;
bcsctl2|
=divs_3;
p1dir |
=(bit0+bit1+bit4)
;// 設定p1.0,1 和 p1.4 為輸出
p1sel |
=(bit0+bit4)
;// 設定p1.0為aclk輸出, p1.4為smclk輸出
while(1
)}
效果如下
基本時鐘配置效果
編寫led1閃燈程式,編寫延遲函式,延時時間1s,實現迴圈間隔1s的亮滅。
沒什麼好分析的直接上**
#include
"io430.h"
void
delay_ms
(unsigned cnt)
}int
main
(void
)}
這個task還可以用後面定時器中斷來處理,之後再說。
sao話一下
還記得電影《大魚海棠》裡的一句台詞嗎?這短短的一生我們最終都會失去,你不妨大膽一些,老子整把ak,給你龜兒弄把來福,rnw,做大做強,再創輝煌。
時鐘設定和uart基本配置
開發板採用友善之臂的mini2440 以下 包含了uart配置,uart需要的時鐘配置,fclk hclk pclk 1 2 4 200mhz 100mhz 50mhz 時鐘控制邏輯給整個晶元提供3種時鐘 fclk用於cpu核 hclk用於ahb advanced high performance ...
MSP430 基本時鐘配置
時鐘對於各種型別微控制器而言相當於我們的心臟,重要性不言而喻!本章 菜鳥渃畔 教大家如何配置430的基本時鐘!使用者指導手冊 晶元管腳手冊 根據使用者知道手冊時鐘 分為3種分別是,lfxt1clk,xt2clk,doc如下圖 1 lfxt1clk 低頻 高頻振盪器 可用於外接32768hz的低頻晶體...
SOC時鐘配置
soc的時鐘產生單元 cgu 通過外部輸入時鐘和內部相位鎖相環 pll 和分頻選擇邏輯產生用於片內的不同頻率的時鐘。片內時鐘頻率的改變通過配置 ahb匯流排全域性控制模組單元內部鎖相環暫存器實現。cgu單元內部包含三個鎖相環,分別產生系統主時鐘 ddr物理層時鐘 乙太網物理層時鐘,其配置暫存器位於 ...