protues仿真stm32 虚拟终端 数据不显示或者乱码 标准库
生活随笔
收集整理的這篇文章主要介紹了
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 虚拟终端 数据不显示或者乱码 标准库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go语言载入json的一个坑
- 下一篇: 奥迪坚SVRM(Screen-Voice