1、關於如何使用stm32內部晶振,並配置成48m主頻----
博主最近用stm32f1系列微控制器做乙個觸控螢幕usb滑鼠,考慮不用外部晶振而使用stm32內部8mhz hsi rc作為時鐘源。由於usb協議規定了48mhz 的usb時鐘,故必須對his作pll倍頻處理後得到pllclk作為stsclk時鐘。時鐘關係見如下stm32f1時鐘樹:
模擬正點原子stm32f1暫存器版本使用外部晶振的時鐘初始化函式,改動得到使用hsi作為時鐘源,sysclk為48mhz的初始化**:
void stm32_clock_init(u8 pll)
}其中myrcc_deinit()**如下:
void myrcc_deinit(void)
my_nvic_setvectortable()**如下:
void my_nvic_setvectortable(u32 nvic_vecttab, u32 offset)
(1)使用時在main()函式中應寫成:stm32_clock_init(12),即8/2*12=48mhz.
(2)為使delay_ms()等函式時鐘準確,應在system_stm32f10x.c中將
(3)#define sysclk_freq_48mhz 48000000解除遮蔽
(4)同時要注意在usb時鐘初始化函式中不再對pll時鐘分頻。即時鐘配置暫存器(rcc_cfgr)第22位應設定為1
(5)最後,內部時鐘要想正確使用,需要在啟動.s檔案中遮蔽sysinit
STM32使用外部16MHZ晶振總結
做小封裝產品設計的朋友或許知道3225 4pin的晶振,為何8mhz晶振批量 要到2元一片,而16mhz晶振只需要0.4元甚至更少。究其原因是因為3225封裝的晶振目前全球最低頻率一般為8mhz,而國內8mhz達不到精度指標,所以市場上的8mhz晶振一般為進口晶振,因此成本被壟斷。圖1 3225封裝...
修改STM32庫函式中的晶振值
stm32f407的庫檔案中預設晶振值為25mhz,若外接晶振8mhz,則需修改以下幾個地方 1 修改hse value的值 將 define hse value uint32 t 25000000 value of the external oscillator in hz 修改為 define ...
stm32f4晶振管理
最近要使用stm32f4晶元做開發,根據自己的程式設計習慣,做一些學習記錄,以便於自己以後查閱。我們在設計電路的時候,一般都會設計mcu使用外部晶振,筆者工作中曾經遇到外部晶振故障晶元無法正常啟動問題 無內部晶振老的mcu 使用示波器發現的,在更換了外部晶振以後,問題就解決了。由此筆者想到,stm3...