stm32 usart 串口

比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符, 而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:

  • 10位 × 240个/秒 = 2400bps

    stm32 usart 串口

    USART 串口通信配置步骤

1.使能串口时钟

2.使能GPIO端口时钟

3.GPIO端口模式设置

4.初始化串口参数,波特率、 数据位、 停止位,校验位等

5.使能串口

6.设置串口中断类型并使能

7.初始化NVIC外设,设置串口中断优先级

8.编写串口中断处理函数

举例

void USART1_IRQHandler() //中断处理函数
{
u8 r; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE); //清中断 r = USART_ReceiveData(USART1); USART_SendData(USART1, r);
//while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);
//USART_ClearFlag(USART1, USART_FLAG_TC);
}
} void uart1_init()
{
GPIO_InitTypeDef gpio9 =
{
GPIO_Pin_9, //TX
GPIO_Speed_50MHz,
GPIO_Mode_AF_PP //复用推挽输出
}; GPIO_InitTypeDef gpio10 =
{
GPIO_Pin_10, //RX
GPIO_Speed_50MHz,
GPIO_Mode_IN_FLOATING //浮空
}; USART_InitTypeDef usart =
{
9600,
USART_WordLength_8b,
USART_StopBits_1,
USART_Parity_No,
USART_Mode_Rx | USART_Mode_Tx,
USART_HardwareFlowControl_None, //硬件流控制
}; NVIC_InitTypeDef nvic =
{
USART1_IRQn,
2,
2,
ENABLE
}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //使能串口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIO端口时钟 GPIO_Init(GPIOA, &gpio9); //GPIO端口模式设置
GPIO_Init(GPIOA, &gpio10); USART_Init(USART1, &usart); //初始化串口 USART_ClearFlag(USART1, USART_FLAG_TC); USART_Cmd(USART1, ENABLE); //使能串口 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //设置串口中断类型并使能(接收中断) NVIC_Init(&nvic); //初始化NVIC
}

注:USART_GetITStatus与USART_GetFlagStatus功能类似,区别是USART_GetITStatus函数会先判断是否使能串口中断,使能后才读取状态标志,而USART_GetFlagStatus函数直接读取状态标志

上一篇:PHP自毁程序


下一篇:【Vue实战之路】二、路由使用基础,六步搞定Vue-router