因为想用串口3,但配置了很长时间还是不行,为什么UART1,2行,UART3就不行的,最后原因是:使能GPIOB,端口时钟 USART3时钟,我只使能了UART3时钟,没有使能UART3所在端口GPIOB的时钟,所以导致无法正常启动串口3。
下面具体写下串口配置过程:
1:系统时钟初始化,包括系统时钟和要开放的IO口和串口的时钟配置。
2:IO口初始化,包括引脚,速率,输入输出模式等。
3:配置USART的波特率,数据位等。
对应的3个函数,相当有条理
/--------------——————---------------------------------------------------------------------/
void RCC_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //使能UART3所在GPIOB的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //串口时钟配置
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// Configure USART3 Tx (PB.10) as alternate function push-pull
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// Configure USART3 Rx (PB.11) as input floating
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void USART_Configuration(void)
{
USART_InitStructure.USART_BaudRate = 38400;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART3, &USART_InitStructure);
// 使能 USART3
USART_Cmd(USART3, ENABLE);
}
上一篇:stm32芯片被锁,使用jlink就能轻轻松松解锁
下一篇:向STM32串口发送数据的标准函数
推荐阅读最新更新时间:2024-11-13 14:51
设计资源 培训 开发板 精华推荐
- MCP1790 70mA 高压稳压器的典型应用
- TM4642IY 4.5V 至 20V 输入、650kHz、0.9V 和 1.2V 输出(各为 4A)的典型应用电路
- DM240011,用于 PIC24F MCU 的 MPLAB 入门工具包
- 使用 Microchip Technology 的 MIC2774N-XXBM5 的参考设计
- 使用 ROHM Semiconductor 的 BD49L45G-TL 的参考设计
- 使用 Microchip Technology 的 MIC4574BWM 的参考设计
- NCP130AMX090TCGEVB:NCP130AMX090TCG 偏置轨 LDO 稳压器演示板
- 使用 IXYS 的 CPC9909 的参考设计
- 智能语音蓝牙音箱
- LTC2328-18、18 位、1Msps、伪差分输入 ADC 的典型应用