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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4529|回復: 0
打印 上一主題 下一主題
收起左側

不同晶振配置STM32 波特率

[復制鏈接]
跳轉到指定樓層
樓主
ID:89763 發表于 2015-9-10 01:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 一般來說,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定義的值,這樣保證串口通信波特率正確。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表