上一次已經知道韌體庫中是如何配置系統時鐘的了,那麼,如果想要按照自己的想法來配置乙個超頻或者低頻的時鐘,應該怎麼辦呢?
同樣的,我們將模板複製乙份,然後在user目錄中建立倆個目錄,乙個rcc目錄下建立rcc.c和rcc.h,乙個led目錄下建立led.c和led.h,然後匯入工程當中,在魔棒中指定他們的路徑。led目錄下建立led.c和led.h可以參考以前寫的。
在這裡我們使用hse來設定系統時鐘,當然,也可以使用hsi或者pll來設定系統時鐘。
我們發現,在韌體庫的系統時鐘配置的檔案system_stm32f10x.c中,對系統時鐘的初始化是通過暫存器來實現的,如果我們自己寫,使用暫存器的話就過於麻煩了,當使用韌體庫函式寫的話,我們一般會使用stm32f10x_rcc.c當中已經封裝好的函式,按照setsysclockto72(void)中的步驟來寫。
我個人猜測,rbt6的板子應該是沒有復用osc32_in和 osc32_out這倆個功能的,只是告訴pc14和pc15可以被用來作為復用引腳,但應該需要把跳線帽拿掉然後接外設使用的,而mco也沒有復用,pa8在板子上是接了乙個按鍵,應該也是需要拿掉跳線帽,然後自己加外設。。。。。pc14和pc15對led和lcd的復用應該是通過那個鎖存器來實現的。預設應該是led
rcc.h
#ifndef _rcc_h
#define _rcc_h
#include
"stm32f10x.h"
void
hse_setsysclk
(uint32_t rcc_pllmul_x)
;#endif
rcc.c
#include
"rcc.h"
void
hse_setsysclk
(uint32_t rcc_pllmul_x)
errorstatus;
errorstatus hsestatus;
rcc_hseconfig
(rcc_hse_on)
;//使能hse,
//等待hse啟動就緒,並做超時處理
hsestatus=
rcc_waitforhsestartup()
;//返回值是errorstatus,因此需要定義乙個這個型別的資料來接返回值
if(hsestatus==success)
//hse啟動成功
rcc_sysclkconfig
(rcc_sysclksource_pllclk)
;//選擇pll作為系統時鐘
while
(rcc_getsysclksource()
!=0x08)}
else
}
使用C 編寫LED樣式時鐘控制項
使用c 編寫led樣式時鐘控制項 執行效果 http blog.csdn.net images blog csdn net johnsuna clockcontrol.jpg 未經書面許可,請勿用於商業用途 using system namespace brawdraw.com.photoframe...
作業系統 時鐘
軟定時器 時鐘又稱為定時器,負責維護時間,防止程序壟斷cpu。時鐘由三個部件構成 晶體振盪器 計數器和儲存暫存器。晶體振盪器產生精確地週期性訊號,該訊號通過電路被傳送給計數器,當計數器變為0時就產生乙個cpu中斷。可程式設計時鐘的優勢在於中斷頻率可以由軟體控制,它有不同的操作模式 完成模式 在一次完...
按鍵控制LED流水燈模式 定時器時鐘
include void timer0 init void main unsigned int t0count void timer0 routinr interrupt 1 鬧鐘響之後跳轉到該子函式,執行中斷任務段 中斷子程式 中斷服務程式 中斷初始化之後進入主函式,之後先執行最下邊子函式,然後再...