欢迎光临散文网 会员登陆 & 注册

江科大学习笔记 _11.串口

2023-06-28 19:44 作者:自闭选手的Z23  | 我要投稿



1. 开时钟 GPIO UART

2. 配置GPIO,复用UART 的RX、TX

3. 配置UART结构体

4. 中断接收

 

1. 开时钟 GPIO UART

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

 

2. 配置GPIO,复用UART 的RX、TX

//发送引脚

    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA,&GPIO_InitStruct);

    

    //接收引脚

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;//上拉输入

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA,&GPIO_InitStruct);

 

3. 配置UART结构体

//配置USART参数

    USART_InitTypeDef USART_InitStruct;

    USART_InitStruct.USART_BaudRate = 9600;

    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

    USART_InitStruct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;

    USART_InitStruct.USART_Parity = USART_Parity_No;

    USART_InitStruct.USART_StopBits = USART_StopBits_1;

    USART_InitStruct.USART_WordLength = USART_WordLength_8b;

USART_Init(USART1,&USART_InitStruct);

 

4. 中断接收,配置中断参数

//串口USART_IT_RXNE位(接收移位寄存器) 置1 触发中断

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

//配置NVIC

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//优先级分组


    NVIC_InitTypeDef NVIC_InitStruct;

    NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;

    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;

    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;

NVIC_Init(&NVIC_InitStruct);

 

5.串口使能(上电)

    USART_Cmd(USART1,ENABLE);

 

 

 

 

  

 


江科大学习笔记 _11.串口的评论 (共 条)

分享到微博请遵守国家法律