溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

晶振對stm32串口數(shù)據(jù)傳輸?shù)挠绊懯鞘裁?/h1>
發(fā)布時(shí)間:2021-12-31 09:31:55 來源:億速云 閱讀:466 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“晶振對stm32串口數(shù)據(jù)傳輸?shù)挠绊懯鞘裁础钡挠嘘P(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

一般stm32 外部晶振是8M的,但是如果你要改外部晶振的話,需要把配置文件也改下

晶振對stm32串口數(shù)據(jù)傳輸?shù)挠绊懯鞘裁?></p><p>如圖位置,把8000000改為 16000000;</p><p>圖3  系統(tǒng)時(shí)鐘配置</p><p>   修改SetSysClockTo72(void)文件如下:<br/><br/>static void SetSysClockTo72(void)<br/>{<br/>  __IO uint32_t StartUpCounter = 0, HSEStatus =0;<br/><br/>    <br/>    <br/>  RCC->CR |= ((uint32_t)RCC_CR_HSEON);<br/><br/><br/>  do<br/>  {<br/>    HSEStatus =RCC->CR & RCC_CR_HSERDY;<br/>   StartUpCounter++; <br/>  } while((HSEStatus == 0) &&(StartUpCounter != HSE_STARTUP_TIMEOUT));<br/>  if ((RCC->CR & RCC_CR_HSERDY) !=RESET)<br/>  {<br/>    HSEStatus =(uint32_t)0x01;<br/>  }<br/>  else<br/>  {<br/>    HSEStatus =(uint32_t)0x00;<br/>  } <br/>  if (HSEStatus == (uint32_t)0x01)<br/>  {<br/>   <br/>   FLASH->ACR |= FLASH_ACR_PRFTBE;<br/>   <br/>   FLASH->ACR &=(uint32_t)((uint32_t)~FLASH_ACR_LATENCY);<br/>   FLASH->ACR |=(uint32_t)FLASH_ACR_LATENCY_2;   <br/><br/>   <br/>    RCC->CFGR|= (uint32_t)RCC_CFGR_HPRE_DIV1;<br/>     <br/>   <br/>    RCC->CFGR|= (uint32_t)RCC_CFGR_PPRE2_DIV1;<br/>   <br/>   <br/>    RCC->CFGR|= (uint32_t)RCC_CFGR_PPRE1_DIV2;<br/>#ifdef STM32F10X_CL<br/>   <br/>   <br/>   <br/>       <br/>   RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 |RCC_CFGR2_PLL2MUL |<br/>                             RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);<br/>   RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 |RCC_CFGR2_PLL2MUL8 |<br/>                            RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);<br/><br/>   <br/>    RCC->CR|= RCC_CR_PLL2ON;<br/>   <br/>   while((RCC->CR & RCC_CR_PLL2RDY) == 0)<br/>    {<br/>    }<br/>   <br/>       RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC| RCC_CFGR_PLLMULL);<br/>    RCC->CFGR|= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1|<br/>                           RCC_CFGR_PLLMULL9);<br/>#else   <br/>   <br/>    //16MHZ2分頻如下改動,添加RCC_CFGR_PLLXTPRE_HSE_Div2<br/>    RCC->CFGR&= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE|<br/>                                       RCC_CFGR_PLLXTPRE_HSE_Div2|RCC_CFGR_PLLMULL));<br/>    RCC->CFGR|= (uint32_t)(RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLSRC_HSE |RCC_CFGR_PLLMULL9);<br/>#endif<br/>   <br/>    RCC->CR|= RCC_CR_PLLON;<br/>   <br/>   while((RCC->CR & RCC_CR_PLLRDY) == 0)<br/>    {<br/>    }<br/>   <br/>   <br/>    RCC->CFGR&= (uint32_t)((uint32_t)~(RCC_CFGR_SW));<br/>    RCC->CFGR|=(uint32_t)RCC_CFGR_SW_PLL;   <br/>   <br/>    while((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) !=(uint32_t)0x08)<br/>    {<br/>    }<br/>  }<br/>  else<br/>  {<br/>  }<br/>}<br/>          <br/>如果用的keil  還要改下target里的 xtal 為16Mhz</p><p>以上只是針對于無源晶振,然而對于有源晶振,接法和無源晶振是不一樣的,有源晶振由外部發(fā)送脈沖信號,通過oscin輸入,oscout懸空,此時(shí),在啟動文件system_stm32f0xx.c中,在SetSysClock函數(shù)中,加上</p><p>/*Disable HSI*/</p><p>RCC->CR |= ((uint32_t)RCC_CR_HSEBYP);</p><p>/* Enable HSE */    </p><p>  RCC->CR |= ((uint32_t)RCC_CR_HSEON);</p><p>順序一定不要搞錯,就可以了</p><p>HSEBYP是把 HSI旁路,手冊上說的被旁路,不是外部晶振失能,而是內(nèi)部晶振失能,所以HSEBYP置1表示失能HSE,失能HSI</p><p>有源晶振一般比無源晶振貴,優(yōu)點(diǎn)是輸出波形完美,不受寄生電容干擾,缺點(diǎn)是輸出頻率不可調(diào),無源晶振一般比芯片內(nèi)部晶振效果好十倍,由內(nèi)部脈沖觸發(fā)</p><p class=“晶振對stm32串口數(shù)據(jù)傳輸?shù)挠绊懯鞘裁础钡膬?nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

stm
AI