久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32使用外部16MHZ晶振總結
[打印本頁]
作者:
qinqin
時間:
2015-6-9 00:08
標題:
STM32使用外部16MHZ晶振總結
做小封裝產品設計的朋友或許知道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歡暢的運行
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91欧美精品成人综合在线观看
|
丝袜一区二区三区
|
黑人精品欧美一区二区蜜桃
|
96国产精品久久久久aⅴ四区
|
成人免费在线电影
|
成人精品久久日伦片大全免费
|
国内成人免费视频
|
国产精品久久久久久久久免费桃花
|
九九国产
|
亚洲精品中文字幕
|
久久9999久久
|
国产精品中文字幕在线
|
欧美日韩一区二区三区不卡视频
|
欧美日韩综合
|
99精品视频在线
|
天天躁日日躁狠狠的躁天龙影院
|
成年人在线视频
|
国产精品欧美精品日韩精品
|
性福视频在线观看
|
黄视频网址
|
精品91久久
|
亚洲精品大片
|
午夜免费
|
亚洲午夜精品在线观看
|
国产美女福利在线观看
|
欧美一区两区
|
欧美日韩视频在线播放
|
久久精品一
|
黄色播放
|
狠狠艹
|
麻豆久久
|
日韩精品一区二区三区视频播放
|
成人高潮片免费视频欧美
|
国产在线www
|
亚洲自拍偷拍欧美
|
综合久久综合久久
|
91视频在线观看
|
最新av片
|
国产日韩电影
|
av资源在线看
|
三区在线
|