亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

標題: 不同晶振配置STM32 波特率 [打印本頁]

作者: liuzhu    時間: 2015-9-10 01:33
標題: 不同晶振配置STM32 波特率
 一般來說,stm32都是用標配的晶振,比如8MHz.但是,如果用別的晶振,比如13.56M的晶振,那串口接收還正常嗎?
  根據試驗結果,很可能會飛碼。比如說用串口助手發送的是0x35,但是在串口接收中斷里面就會得到別的值,即上位機發送的數據和板子接收的數據不一致。
  通過查資料,解決辦法如下:
  修改文件stm32f10x.h,
  把
  #define HSE_VALUE ((uint32_t)8000000)
  修改為:
  #define HSE_VALUE ((uint32_t)13560000)
  這樣,就正常了。
  另外,有的網友說還需要修改一個文件:system_stm32f10x.c,修改PLL參數:
  將
  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC |RCC_CFGR_PLLXTPRE |
  RCC_CFGR_PLLMULL));
  RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE |RCC_CFGR_PLLMULL9);
  修改為:
  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC |RCC_CFGR_PLLXTPRE |
  RCC_CFGR_PLLMULL));
  RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE |RCC_CFGR_PLLMULL4);
  (因為我的SYSCLK是54.24M)
  再摘抄某網友的一段話,幫助理解:
  如果你仔細研究USART_Init()函數,你會發現,這個程序在配置波特率時會讀取RCC有關的寄存器來計算當前CPU實際的工作頻率是多少,然后計算參數來實現你需要的波特率——就是說不管你把單片機設置為什么樣的工作頻率,這個函數都能讓串口以你要求的波特率工作。
  當然如果你把原來8M的晶振換掉了,那你就需要修改系統中的一個定義:在文件stm32f10x.h中的定義HSE_Value,這參數定義了單片機使用外部晶振或時鐘源的頻率,一般就是8000000,即使用8MHz晶振。如果你的STM32用了什么7.3728、11.0592或者25MHz晶振時,你就要修改HSE_Value定義的值,這樣保證串口通信波特率正確。






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1