日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

protues仿真stm32 虚拟终端 数据不显示或者乱码 标准库

發布時間:2023/12/9 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protues仿真stm32 虚拟终端 数据不显示或者乱码 标准库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:

在虛擬串口的窗口不顯示數據或者亂碼

錯誤原因:

不顯示:標準庫默認使用的外部晶振,而在protues中我并未連接外部晶振

亂碼:頻率錯了

解決方案:

1.配置內部時鐘

2.根據自己的配置修改仿真的頻率

1.配置內部時鐘代碼

void HSI_SetSysClock(uint32_t pllmul) { __IO uint32_t HSIStartUpStatus = 0;// 把 RCC 外設初始化成復位狀態 RCC_DeInit();//使能 HSI RCC_HSICmd(ENABLE); // 等待 HSI 就緒 HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY; // 只有 HSI 就緒之后則繼續往下執行 if (HSIStartUpStatus == RCC_CR_HSIRDY) { //-------------------------------------------------------------// // 這兩句是操作 FLASH 閃存用到的,如果不操作 FLASH,這兩個注釋掉也沒影響 // 使能 FLASH 預存取緩沖區 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// SYSCLK 周期與閃存訪問時間的比例設置,這里統一設置成 2 // 設置成 2 的時候,SYSCLK 低于 48M 也可以工作,如果設置成 0 或者 1 的時候, // 如果配置的 SYSCLK 超出了范圍的話,則會進入硬件錯誤,程序就死了 // 0:0 < SYSCLK <= 24M // 1:24< SYSCLK <= 48M // 2:48< SYSCLK <= 72M FLASH_SetLatency(FLASH_Latency_2); //------------------------------------------------------------//// AHB 預分頻因子設置為 1 分頻,HCLK = SYSCLKRCC_HCLKConfig(RCC_SYSCLK_Div1);// APB2 預分頻因子設置為 1 分頻,PCLK2 = HCLK RCC_PCLK2Config(RCC_HCLK_Div1);// APB1 預分頻因子設置為 1 分頻,PCLK1 = HCLK/2 RCC_PCLK1Config(RCC_HCLK_Div2);//-----------設置各種頻率主要就是在這里設置-------------------// // 設置 PLL 時鐘來源為 HSI,設置 PLL 倍頻因子 // PLLCLK = 4MHz * pllmul RCC_PLLConfig(RCC_PLLSource_HSI_Div2, pllmul); //-- -----------------------------------------------------//// 開啟 PLL RCC_PLLCmd(ENABLE); // 等待 PLL 穩定 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { }// 當 PLL 穩定之后,把 PLL 時鐘切換為系統時鐘 SYSCLK RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 讀取時鐘切換狀態位,確保 PLLCLK 被選為系統時鐘 while (RCC_GetSYSCLKSource() != 0x08) { } } else { // 如果 HSI 開啟失敗,那么程序就會來到這里,用戶可在這里添加出錯的代碼處理 // 當 HSE 開啟失敗或者故障的時候,單片機會自動把 HSI 設置為系統時鐘, // HSI 是內部的高速時鐘,8MHZ while (1) { } } }

這段代碼是將時鐘源配置內部時鐘源,并在主函數中引用

int main(void) {HSI_SetSysClock(RCC_PLLMul_9);usart1_config();delay_ms(200);Usart_SendString(USART1, "usart1");while(1){Usart_SendString(USART1, "hope\r\n");delay_ms(100);}}

2.在這里HSI_SetSysClock(RCC_PLLMul_9); 則設置系統時鐘為:4MHZ * 9 = 36MHZ

即:仿真中也需要改為36Mhz

最后,顯示正常

注:代碼來自《STM32庫開發實戰指南》

總結

以上是生活随笔為你收集整理的protues仿真stm32 虚拟终端 数据不显示或者乱码 标准库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。