Stm32f407DISCOVEY学习uart串口波特率乱总结

发布者:VS821001最新更新时间:2018-08-13 来源: eefocus关键字:Stm32f407  uart  串口波特率 手机看文章 扫描二维码
随时随地手机看文章

这几天调试Stm32f407DISCOVEY。由于没有串口现成的库函数例程,就用的神州王开发板上的例程直接调,结果串口输出老是乱,115200波特率;;试着把它换到 38400居然可以打印,相差3倍多;真相只有一个,进过调试摸索百度,终于找到原因;

.时钟频率不对 由于时钟频率是在库文件里自动定义好的,一开始没有发现,但是波特率一直不对,后来发现问题在库文件里定义的外部晶振是25M,而DISCOVERY的板子上用的是8M的晶振,故产生的主频不对,需要改两个地方,①所以在 stm32f4xx.h中改
#if !defined (HSE_VALUE) 
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

在system_stm32f4xx.c中改
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */

#define PLL_M 8


串口正常打印了;



关键字:Stm32f407  uart  串口波特率 引用地址:Stm32f407DISCOVEY学习uart串口波特率乱总结

上一篇:STM32串口程序(寄存器版)
下一篇:STM32F407的时钟配置(system_config.c浅见)

推荐阅读最新更新时间:2024-03-16 16:10

mini2440裸机试炼之——Uart与pc端实现文件、字符传输
1、波特率(Baud rate)即调制速率,1波特即指每秒传输1个符号。 2、非FIFO模式,即传输数据不利用FIFO缓存,一个字节一个字节地传输。 3、接收到的数据是放到接收缓存器URXHn中,要发送数据时,是把数据放入发送缓存器UTXHn中。由于UART是通过字节方式传输数据的,因此要区分是大端模式还是小端模式,也就是说这两个寄存器在这两种模式下,所在的地址是不同。为了了解当前数据传输的各种状态,还需要一些状态寄存器。传输状态寄存器UTRSTATn非常有用,它的第0位可以用来判断接受缓存器内是否有可接收的数据,第1位和第2位可以用来判断发送缓存器中是否为空,为空时可以发送数据。由于在这里我们不进行传输数据时错误的判断,
[单片机]
mini2440裸机试炼之——<font color='red'>Uart</font>与pc端实现文件、字符传输
STM8 入门学习与实验(一)GPIO与UART
简介:这一章节将描述如何配置GPIO,以及如何配置UART STM8工程模版:http://download.csdn.net/detail/u012388993/9904051 这两则实验将使用到的基本的系统配置初始化函数 CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);//配置UART1时钟 CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);配置时钟分频为1,则系统时钟频率为16Mhz/1 = 16Mhz CLK_HSICmd(ENABLE);//使能内部振荡器 实验一、点亮LED灯,灯正极接电源负极连接到引
[单片机]
STM8 入门学习与实验(一)GPIO与<font color='red'>UART</font>
单片机模拟串口发送和波特率问题
传统的8051系列单片机一般都配备一个串口,而STC 89C52RC增强型单片机也不例外,只有一个串口可供使用,这样就出问题了,假如当前单片机系统要求二个串口或多个串口进行同时通信,8051系列单片机只有一个串口可供通信就显得十分尴尬,但是在实际的应用中,有两种方法可以选择。 方法1:使用能够支持多串口通信的单片机,不过通过更换其他单片机来代替8051系列单片机,这样就会直接导致成本的增加,优点就是编程简单,而且通信稳定可靠。 方法2:在IO资源比较充足的情况下,可以通过IO来模拟串口的通信,虽然这样会增加编程的难度,模拟串口的波特率会比真正的串口通信低一个层次,但是唯一优点就是成本上得到控制,而且通过不同的IO组合可以实现更加之多
[单片机]
STM32 UART常用的3种中断接收
#include sys.h #include usart.h #include main.h //如果使用ucos,则包括下面的头文件即可. #if SYSTEM_SUPPORT_OS #include includes.h //ucos 使用 #endif //注意,读取USARTx- SR能避免莫名其妙的错误 u8 USART1_RX_BUF ; //接收缓冲,最USART_RX_LEN个字节 u8 USART2_RX_BUF ; //接收缓冲,最USART_RX_LEN个字节 u8 USART1_TX_BUF ; //发送缓冲,最大USART_TX_LEN个字节 u8 USART2_TX_BUF ; //
[单片机]
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制
1 前言 直接存储器访问(Direct Memory Access),简称 DMA。DMA 是 CPU 一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需 CPU 干预,数据拷贝结束则通知 CPU 处理。 因此,大量数据拷贝时,使用 DMA 可以释放 CPU 资源。DMA 数据拷贝过程,典型的有: 内存— 内存,内存间拷贝 外设— 内存,如 uart、spi、i2c 等总线接收数据过程 内存— 外设,如 uart、spi、i2c 等总线发送数据过程 2 串口有必要使用 DMA 吗 串口(uart)是一种低速的串行 异步通信 ,适用于低速通信场景,通常使用的 波特率 小于或等于 115200bps。
[单片机]
Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发
概述 Windows下使用Keil MDK5进行 STM32F407VET6 的开发和编译, 配合ST-LINK工具进行烧录, 使用标准外设库SPL. STM32F407硬件环境 主要参数 STM32F407VET6 Arm Cortex-M4 168MHz Max Clock Speed 512k flash 192k ram LQFP 100 pins Backup SRAM 4k STM32F407VET6 Black Board 开发板 具体说明可以查看 https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0.html ST-Link 编程器 使用
[单片机]
Keil MDK STM32系列(三) 基于标准外设库SPL的<font color='red'>STM32F407</font>开发
PIC18F452+Proteus双机通信 串口通信 键盘更改波特率源程序
系统功能 1、实现双机之间的通信 (1)在主机上通过4*4键盘上的键值“1”“2”“3”设定波特率(2400、4800、9600),发给从机,两者正常通信; (2)从机将采集到的压力信号传到主机,主机通过LCD显示在第一行,我们可以观察到主机的LCD显示的数和从机的保持一致。 (3)主机通过获取按键“5”“6”“7”,改变从机的ADC采样率分别为“10s”“20s”“30s”,由于ADC采样率不易直接观察改变,可将采样率的值通过从机的三个不同颜色的小灯显示。 2、从机通过ADC采样获取压力传感器模拟输出端口的电压值,并将电压值转化为压力值,通过自身的LCD显示; 3、主机获得从机采集的压力值之后,和初始设定的压力值(我设置
[单片机]
PIC18F452+Proteus双机通信 <font color='red'>串口</font>通信 键盘更改<font color='red'>波特率</font>源程序
STM8--UART2
UART以一个起始位开始通信,起始方法是由TX引脚输出低电平。跟着起始位之后是要发送的8位或者9位数据,如果有奇偶校验则数据后面是奇偶校验的数据信息,最后是停止位,停止位可以设置为1,2,1.5个。 发送配置及单字节通信过程: 寄存器介绍: 控制寄存器 1(UART_CR1): 控制寄存器 2(UART_CR2): 控制寄存器 3(UART_CR3): 波特比率寄存器 1(UART_BRR1): 波特比率寄存器 2 (UART_B): 状态寄存器(UART_SR): 数据寄存器(UART_DR): 使用流程: 1:设置数据长度,奇偶效验,停止位
[单片机]
STM8--<font color='red'>UART</font>2
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved