做小封裝產品設計的朋友或許知道3225-4PIN的晶振,為何8MHZ晶振批量價格要到2元一片,而16MHZ晶振只需要0.4元甚至更少。究其原因是因為3225封裝的晶振目前全球最低頻率一般為8MHZ,而國內8MHZ達不到精度指標,所以市場上的8MHZ晶振一般為進口晶振,因此成本被壟斷。
圖1 3225封裝晶振
STM32單片機學習者一開始用的晶振一般是2PIN的8MHZ晶振,一旦正真做產品研發的時候,使用到3225的8MHZ晶振的話,成本是個不小的挑戰。筆者現針對這個問題,提出使用16MHZ晶振代替的方法。
圖2 STM32時鐘樹狀圖
由上圖可以看出,如果想兼容8MHZ晶振,必須在時鐘倍頻前2分頻。程序設計如下,在system_stm32f10x.c文件下修改系統時鐘配置,配置為72MHZ。
圖3 系統時鐘配置
修改SetSysClockTo72(void)文件如下:
static void SetSysClockTo72(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus =0;
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
do
{
HSEStatus =RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) &&(StartUpCounter != HSE_STARTUP_TIMEOUT));
if ((RCC->CR & RCC_CR_HSERDY) !=RESET)
{
HSEStatus =(uint32_t)0x01;
}
else
{
HSEStatus =(uint32_t)0x00;
}
if (HSEStatus == (uint32_t)0x01)
{
FLASH->ACR |= FLASH_ACR_PRFTBE;
FLASH->ACR &=(uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |=(uint32_t)FLASH_ACR_LATENCY_2;
RCC->CFGR|= (uint32_t)RCC_CFGR_HPRE_DIV1;
RCC->CFGR|= (uint32_t)RCC_CFGR_PPRE2_DIV1;
RCC->CFGR|= (uint32_t)RCC_CFGR_PPRE1_DIV2;
#ifdef STM32F10X_CL
RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 |RCC_CFGR2_PLL2MUL |
RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 |RCC_CFGR2_PLL2MUL8 |
RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);
RCC->CR|= RCC_CR_PLL2ON;
while((RCC->CR & RCC_CR_PLL2RDY) == 0)
{
}
RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC| RCC_CFGR_PLLMULL);
RCC->CFGR|= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1|
RCC_CFGR_PLLMULL9);
#else
//16MHZ2分頻如下改動,添加RCC_CFGR_PLLXTPRE_HSE_Div2
RCC->CFGR&= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE|
RCC_CFGR_PLLXTPRE_HSE_Div2|RCC_CFGR_PLLMULL));
RCC->CFGR|= (uint32_t)(RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLSRC_HSE |RCC_CFGR_PLLMULL9);
#endif
RCC->CR|= RCC_CR_PLLON;
while((RCC->CR & RCC_CR_PLLRDY) == 0)
{
}
RCC->CFGR&= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR|=(uint32_t)RCC_CFGR_SW_PLL;
while((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) !=(uint32_t)0x08)
{
}
}
else
{
}
}
到此,很多讀者認為設計已經完畢,這個系統也如愿地倍頻至72MHZ了,但忽略了一個小細節。我們需要修改stm32f10x.h文件里面的外部時鐘宏定義,有一些外設的時鐘是直接使用外部時鐘配置的,比如串口等。
#if !defined HSE_VALUE
#ifdefSTM32F10X_CL
#defineHSE_VALUE ((uint32_t)25000000)
#else
#defineHSE_VALUE ((uint32_t)16000000)
#endif
#endif
至此,程序修改完畢。整個系統圍繞8MHZ倍頻至72MHZ歡暢的運行
上一篇:STM32_RTC晶振不起振的原因及解決方法
下一篇:stm32f105 spi 移植到stm32f103上
推薦閱讀
史海拾趣
為了進一步擴大市場份額,DCCOM公司積極尋求與國內外知名企業的合作。通過與這些企業的合作,DCCOM不僅獲得了更多的客戶資源,還學習到了先進的管理經驗和技術知識。這種合作模式使得DCCOM在激烈的市場競爭中保持了強勁的增長勢頭。
隨著市場的不斷變化和客戶需求的日益多樣化,Alpha 3 Manufacturing公司意識到只有不斷創新才能在競爭中立于不敗之地。因此,公司加大了對技術研發的投入,引進了一批高端技術人才,建立了完善的研發體系。經過不斷的努力,公司成功推出了一系列具有自主知識產權的高性能電子產品,贏得了客戶的廣泛贊譽。
Arcolectric公司成立于1932年,作為Elektron PLC Group的一個著名品牌,它從一開始就專注于開關、指示燈及保險絲座的生產。在創立初期,Arcolectric就展現出了對技術的深厚積累和獨特見解,成功研發出了一系列高質量、高性能的產品,為公司的長遠發展奠定了堅實的基礎。
在1935年,DURAKOOL公司在Durakool成立,由幾位電子工程師和發明家共同創立。他們的初衷是為電氣和電子市場提供高質量的組件和系統。起初,公司面臨著資金短缺和市場競爭激烈的挑戰,但他們憑借對技術的熱情和不懈的努力,逐漸開發出了一系列具有競爭力的產品,如Durakool水銀繼電器和功率繼電器,贏得了客戶的認可。
在20世紀60年代,人類開始了對月球的探索。Cicoil公司的柔性扁平電纜被選為阿波羅任務的關鍵組件之一。這些電纜為宇航員在月球上的活動提供了安全可靠的電力和數據傳輸保障。當尼爾·阿姆斯特朗和巴茲·奧爾德林在月球上行走時,他們的每一步都離不開Cicoil電纜的支持。這一歷史性的時刻讓Cicoil公司名聲大噪,也進一步鞏固了其在電子行業中的地位。
捷嘉電子在成立初期面臨著巨大的挑戰。那是一個智能電子產品剛剛開始興起的時代,市場競爭激烈。公司創始人余文躍憑借對電子行業的深刻理解和對技術創新的執著追求,決定投身于智能控制器的研發與生產。在初創階段,資金緊張、人才短缺、市場推廣困難重重。但余文躍憑借著堅韌不拔的毅力,帶領團隊攻克了一個又一個技術難題,逐漸在市場上站穩了腳跟。
摘要:介紹了可編程模擬器件的基本原理和開發流程。列舉了主流器件系列,并說明其核心技術。展望了可編程模擬器件的發展前景。 關鍵詞:可編程模擬器件 模擬可編程技術 可編程模擬器件(Programmable Analog Device)是近年來嶄露頭角的一類新型 ...… 查看全部問答∨ |
|
RT,我做的網也用GB2312編碼,在XP上運行正常的,但是放在ARM板子上運行的時候就是亂碼,每次都要手工調整網頁編碼為GB2312后才能正常顯示,哪里有問題呢? 我試過了用UTF8編碼,還是一樣的問題... 誰知道嗎? … 查看全部問答∨ |
廠家提供的觸摸屏驅動是cec格式文件,我把這個文件添加到Catalog中,然后 Add to OSDesign添加到工程。(發現添加cec文件后,會在OSDEsign View中增加一個分支為Projects),之后修改注冊表信息,如下 [HKEY_LOCAL_MACHINE\\Drivers\\B ...… 查看全部問答∨ |
請高手指點: 我在編譯 wince 內核并且少到 板子上, 系統啟動有時候正常有時候中文全部沒有了, 有時候是部分中文沒有了, 比如: 本來 在桌面點右鍵, 會出現 ...… 查看全部問答∨ |
|
本人的燒錄器是拓普TOP2005,如果我想用燒錄器直接寫數據到24C02存儲芯片,那么我在燒錄的HEX文檔的第00H地址內容改為01H,這樣就可以完成00H地址的數據修改嗎… 查看全部問答∨ |