uart
通信的波特率是跟时钟频率有关的。所以随便换个晶振,必然影响
uart
的工作。翻开库函数
usart_init,通过
rcc_getclocksfreq
函数获取系统频率的。而此函数又是由
hse_value
影响频率值的。这就是晶振频率。这个宏在
stm32f10x.h
里做了定义,你可以直接到这个头文件里改掉它。由于使用了
#if
!defined
hse_value#define
hse_value
xxxx的方式,由于keil
mdk
编译器的预定义符号里被不能给
hse_value
定义
12000000
这样的常数,你也可以自己建立一个头文件来定义
hse_value
12000000,
#include
先于
stm32f10x.h
(说起来有点复杂,但可以不去改
stm32f10x.h)。
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//
GPIO_Init(GPIOA, GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, GPIO_InitStructure);
下载个STM32CUBEMX进行图形化配置很方便。
要不你可以看看ST的UART例程,无非注意外设时钟、管脚配置的确认及
调整。cube库里配置如下:
/* Put the USART peripheral in the Asynchronous mode (UART Mode) */
/* UART configured as follows:
- Word Length = 8 Bits (7 data bit + 1 parity bit) : BE CAREFUL : Program 7 data bits + 1 parity bit in PC HyperTerminal
- Stop Bit = One Stop bit
- Parity = ODD parity
- BaudRate = 9600 baud
- Hardware flow control disabled (RTS and CTS signals) */
UartHandle.Instance = USARTx;
UartHandle.Init.BaudRate = 9600;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_ODD;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
if (HAL_UART_Init(UartHandle) != HAL_OK)
{
/* Initialization Error */
Error_Handler();
}
单片机串口接485接口芯片实现485通讯。
串口通信是系统与PC机交互的重要部分,STM32F103内置3个USART。
ST公司为用户应用程序开发提供了丰富的固件库,用户只需对底层微处理器的外设进行简单初始化配置即可使用[4]。初始化配置主要包括时钟、I/O端口、串口、中断等的配置。本系统采用USART复用I/O口PA9作为串口发送引脚,配置为推挽输出,速度为50MHz;USART复用I/O口PA10作为串口接收引脚,配置为浮空输入。串口工作方式和中断配置,波特率为115200Baud、8位数据位、无校验位、1位停止位。初始化串口程序可参考官网的标准库。
1、首先打开自己的电脑进入桌面,接着在电脑中点击FlyMcu.exe,进入配置界面,如下图所示。
2、然后在下载之前选择搜索串口,连接好开发板之后,选择波特率,如下图所示。
3、然后在页面中,选择编辑好的程序代码,将生成的hex文件选中,如下图所示。
4、设置完成后,接着点击页面中的开始编程,就可以下载到硬件里了,如下图所示,就完成了。
不是这么配置的,你是不是要调试串口,然后调试,如果是的话,这个就是让你更加清楚的看出串口1的各种状态,例如,你的图上显示了波特率是9600等。而不是通过它来配置。配置是要通过库函数,或者直接操作寄存器的方式,进行操作的。
本文标签:stm32f103ha库l串口配置方法