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 虚拟终端 数据不显示或者乱码 标准库相关推荐
- STM32f103+protues仿真(二) OLED显示
STM32f103+protues仿真(二) OLED显示 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 STM32f103+protues仿真(二) OLED显示 前言 ...
- STM32从零到一,从标准库移植到HAL库,UART串口1以DMA模式收发不定长数据代码详解+常见问题 一文解析
前言 本文的参考资料 感谢提供标准库版本的CSDN同学:这两篇文章至少是我看过的最详细的标准库配置DMA版本.而且代码实测稳定能用. STM32 | DMA配置和使用如此简单(超详细)_...| .. ...
- STM32读取SHT3x系列温湿度传感器,标准库和HAL库
STM32读取SHT3x系列(SHT30.SHT31.SHT35)温湿度传感器的数据并显示在0.96寸OLED屏上. 我下面提供两份代码,一份是标准库使用硬件I2C的,另一份是HAL库使用软件模拟II ...
- STM32/APM32 用DMA采集ADC1多通道--标准库
本文使用的是APM32E103作为示例的, STM32F/E以及APM32F等系列同样适用. 一.ADC及其通道 ADC1:最多16个外部通道,2个内部通道.内部通道分别是温度传感器和参考电压 ①:温 ...
- 关于Proteus 8仿真STM32串口通信时显示数据错误或乱码问题解决!
本人用Proteus 8仿真STM32F401RBT6串口通信时一直不能正确收发数据,写到板子通信数据显示正常,也在csdn查了很多人的解决办法,但都没了正常解决,直到看到某大神说到串口参数,我试着改 ...
- protues 仿真stm32的问题
- STM32歌唱《孤勇者》(标准库)
先说一下自己玩两年的单片机的想法吧,玩了大概有两年了,从刚刚开始的不知所措,到现在的成熟,终于还是搞明白了一件事,编程思路,远远比源码更重要,所以,我接下来会给大家完整的介绍,完成此项目的心得,太心酸 ...
- STM32f103+protues仿真(一) 点亮led
STM32f103+protues仿真(一) 点亮led 文章目录 STM32f103+protues仿真(一) 点亮led 前言 一.程序编写 1.led.c 2.led.h 3.main.c 4. ...
- mysql阿里云不显示中文乱码_MySQL命令窗口下中文显示乱码的解决过程
MySQL命令窗口下中文显示乱码的解决过程 在dos客户端输出窗口中查询表中的数据,还有项目部署到服务器上时前台的页面,中文数据都显示成乱码,如下图所示: 这个问题困扰了我一天,后来解决了才发现原来我 ...
- 输入电话号码数码管流动显示protues仿真 汇编代码
输入电话号码数码管流动显示protues仿真 汇编代码 功能:可以通过矩阵键盘按键输入电话号码 一次只能输入一位 按确定键之后可以输入下一位 按下播放键之后数码管流动显示 播放之后不能返回 keil代 ...
最新文章
- 菜刀php木马_php网站安全防止各类一句话木马的攻击
- Maven(三):将web项目的war包热部署到远程Tomcat服务器
- php 利用http上传协议(表单提交上传图片 )
- leetcode406. 根据身高重建队列
- [css]你有使用过preload、preconnect、prefetch这些属性吗?说说它们都有什么作用?
- AngularJS移动端页面input无法输入
- JavaWeb 后端 三 之 Response Request 学习笔记
- X86 CPU特性之(1)-umip
- PATH和CLASSPATH
- 斗鱼递交私有化退市文件 与虎牙合并暂无完成时间表
- 建立p2p互相连接的社区集群机器人设计(一)
- eclipse 项目显示红叉
- 如何在旋转屏幕后不再重建Activity
- MySQL报错:Data too long for column
- python怎么用散点图_Python利用matplotlib绘制散点图的新手教程
- 使用QUuid生成唯一码
- 软件工程——初识文档
- android mail发送邮件(包含163邮箱及qq邮箱,使用mail.jar,activation.jar,additionnal.jar)
- Vlan与二层交换机
- 如何在小内存主机上搭建博客
热门文章
- 软件测试总结——常见的面试问题(一)
- Axure|【医药、医疗】药企员工内部培训平台原型
- Java高端培训蚂蚁课堂(每特学院)系列项目实战
- C++程序设计课程主页-2014级
- C语言-内存操作-memory.h头文件
- oracle sql练习_最方便的在线SQL学习环境——Oracle Live SQL
- java socket监听_Java -socket接口(监听)
- python下载手机app视频教程_Python实例教学
- C++使用万能头文件报错
- ojdbc6不能使用的解决办法