久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3881|回復: 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定義的值,這樣保證串口通信波特率正確。

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲天天干 | 中文字幕1区2区 | 国产真实精品久久二三区 | 欧美在线综合 | 一区二区手机在线 | 国产精品久久久久aaaa九色 | 中文字幕乱码视频32 | 午夜视频在线 | 日韩在线观看视频一区 | 国产日韩一区二区三区 | 成人黄色网址大全 | 国产精品久久久久久久免费大片 | 国产 日韩 欧美 中文 在线播放 | 日韩一区二区成人 | 欧美日韩在线免费观看 | 欧美成人免费在线视频 | 欧美一区二区三区四区视频 | 久久精品国产一区二区电影 | 欧美日韩在线看 | 日韩三区| 91久久看片 | 亚州国产 | 欧美性精品 | 瑟瑟免费视频 | h视频免费在线观看 | 天堂色综合 | 欧美日韩国产在线观看 | 国产一区久久 | 午夜精品91| 中文字幕一区二区在线观看 | 午夜在线免费观看视频 | 自拍亚洲| 国产91久久精品一区二区 | 日韩欧美精品一区 | 亚洲视频在线观看一区二区三区 | 久久综合色综合 | 久久精品99久久 | 国产成年人视频 | 亚洲免费在线 | 日韩欧美一区二区三区四区 | 亚欧洲精品在线视频免费观看 |