STM32串口通信以及温度采集搞定,其中主要遇到STM32系列单片机时钟树的问题,串口通信遇到串口调试助手能够接收到数据但出现乱码现象,开始一直以为是串口配置和程序代码问题,因为是第一次上电在线调试STM32板子,后面主要查串口波特率配置和收发函数程序段,如下图:
波特率设置成115200没问题,试着降低波特率改成9600和4800但问题依旧没有解决,紧接着如下处理:
将重定向函数注释,单独写串口发送字节和字符串函数,依旧失败。最后锁定到系统时钟配置上,由于手上的STM32开发板改用了12M的晶振,根据单片机时钟树的理解和解读,一般采用外部时钟HSE,系统时钟配置成72M,8*9=72,,12*6=72,对于 SYSCLK、HCLK、PCLK2、PCLK1 这四个时钟的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,PCLK1=HCLK/2= 36M。UART1挂载在APB2总线,而PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,
因此在system_stm32f10x.c文件中的setsysclockto72()函数中,(system_stm32f10x.c文件实现了 STM32的时钟配置,操作的是片上的 RCC这个外设统在上电之后,首选会执行由汇编编写的启动文件,启动文件中的复位函数中调用systemInit 函数就在这个文件里面定义。systemInit 函数默认调用setsysclockto72()配置系统时钟,系统的时钟就被初始化成 72M。)这样便将系统时钟配置成了72M,否则为12*9=108M。但测试运行仍然接收到乱码。
继续找问题所在,查看 在stm32f10x.h里,有下面这段代码,
原因是库使用默认8MHz晶振,可以通过宏使用25MHz或12M晶振。具体定义在stm32f10x.h文件中,HSE_VALUE,一开始定义成了8000000,改成12000000搞定,串口通信显示正常。
关键字:STM32 串口通信 数据乱码
引用地址:
STM32串口通信数据乱码的相关问题
推荐阅读最新更新时间:2024-11-17 02:55
用qt编写上位机与stm32通信
好的文章 1、Qt5.5.1实现通用串口程序https://www.2cto.com/kf/201607/524028.html 2、QT实现串口通信 https://www.2cto.com/kf/201610/558768.html 资源下载:https://download.csdn.net/download/hellybobo/9950904?web=web 本文采用的的开发环境是VS2010+Qt5.5.1版本,所有程序不是通过Qt Creator编译的,如果有需要可以介绍VS2010和Qt环境的搭建和简单的使用。 QSerialPort QSerialPort这个类是从QT5.1开始引入的,之前都是通过
[单片机]
STM32中 初始化ADXL345芯片
初始化ADXL345芯片 void ADXL345init() { Single_WriteI2C(0x31,0x0B);//低电平输出,13位全分辨率,输出数据右对齐,16g量程 Single_WriteI2C(0X2C,0x0A);//数据输出速率为100HZ,10ms读一次数据 Single_WriteI2C(0X2D,0x28);//链接使能,测量模式 Single_WriteI2C(0X2E,0x80);//INT_ENABLE,使能动态监测终端 Single_WriteI2C(0X1E,0x00);//OFSX Single_WriteI2C(0X1F,0x00);
[单片机]
STM32裸机编程的基础知识(1)
这个系列将介绍 STM32 裸机编程的基础知识,以便更好地理解 STM32Cube、Keil 等框架和 IDE 是如何工作的。本指南完全从头开始,只需要编译器和芯片数据手册,而不依赖任何其它软件工具和框架。 这个系列涵盖了以下话题: 存储和寄存器 中断向量表 启动代码 链接脚本 使用 make 进行自动化构建 GPIO 外设和闪烁 LED SysTick 定时器 UART 外设和调试输出 printf 重定向到 UART 用 Segger Ozone 进行调试 系统时钟配置 实现一个带设备仪表盘的 web 服务器 我们将使用 Nucleo-F429ZI 开发板 (淘宝购买) 贯穿整个指南的实践,每个章节都有一个相关的完
[单片机]
STM32中GPIO的8种工作模式!
在Cortex-M3里,对于GPIO的配置种类有8种: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 I/O端口位的基本结构 1、推挽输出 推挽 电路 是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正
[单片机]
STM32-(30):内部温度传感器
温度传感器 STM32有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA)。 该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是17.1 u s。STM32的内部温度传感器支持的温度范围为: -40~125度。精度比较差,为±1.5°C左右。 注:V25在 25℃时的值为1.43V,斜率为0.0043
[单片机]
stm32复位电路设计
在官方芯片资料是这样介绍的,如下图所示: 图中复位源将最终作用于RESET 管脚,并在复位过程中保持低电平,就是说复位过程中巴mos管导通拉低,会有不少于20us的低电平状态,由此一来,当NRST的外接电路复位是高电平的话,就需要接限流电阻,比如说接下图的up监控模块(注:stm32内部也有看门狗): 7引脚在复位过程保持高电平,为了防止复位过程太大的电路灌入NRST,需要接R38,这样的电阻限流,保护NRST
[单片机]
STM32快速初始化引脚 一行代码完成引脚初始化
前言 平时开发STM32的时候,经常涉及到初始化引脚,便编写了一个快速初始化引脚函数,可分别在F1、F4使用,建议放在sys.c中 硬件准备 STM32开发平台 程序设计 对于STM32F1平台: //以下宏定义等内容放在sys.h #define PA RCC_APB2Periph_GPIOA #define PB RCC_APB2Periph_GPIOB #define PC RCC_APB2Periph_GPIOC #define PD RCC_APB2Periph_GPIOD #define PE RCC_APB2Periph_GPIOE #define PF RCC_APB2Periph_GPIOF #defin
[单片机]
ST推四套价格低廉STM32评估及开发工具 均由第三方开发
Hitex、IAR、Keil和Raisonance公司的评估及开发工具与ST的量产的ARM Cortex-M3内核微控制器同步上市 中国,2007年10月15日 — 意法半导体(纽约证券交易所代码:STM)今天推出四套价格低廉的评估及开发工具,这些工具是由ST的主要的第三方软件供应商开发的,支持ST最近推出的基于具有突破性的ARM Cortex-M3内核的STM32微控制器。这些开发入门工具的开发厂商分别是Hitex、IAR、Keil和Raisonance,通过使用这些开发工具,用户可以轻松了解STM32的特性和功能,只需很少的时间和资金就能开始正式的应用程序开发,这些开发工具的价位在109美元到239美元之间。 全系列产品
[单片机]