当前位置:首页 > STM32模块初始化模版和函数寄存器汇总
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//不使能硬件流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//使能发送,接收 USART_Init(USART1, &USART_InitStructure);//初始化串口
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//串口接收中断使能 //USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //串口发送中断使能 USART_Cmd(USART1, ENABLE);//串口使能 }
UART IO口设置
void UART_ GPIO_Configuration(void) {
GPIO_InitTypeDef GPIO_InitStructure;//声明GPIO结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_AFIO, ENABLE);//使能串口1,复用IO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//GPIOA9为串口发送引脚,设置为复用推挽输出模式
GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //GPIOA10为串口接收引脚,设置为浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); }
UART 中断初始化
void NVIC_UART_Configuration(void) {
NVIC_InitTypeDef NVIC_InitStructure;//声明串口初始化结构体
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//设置优先级组 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//指定中断类型 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置先占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设置从优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中断 NVIC_Init(&NVIC_InitStructure);//执行初始化函数 }
UART 常用函数
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);//等待接收为空 chars = (USART_ReceiveData(USART1)); //接收字符 USART_SendData(USART1, chars);//发送接收到的字符
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);//等待发送完成
UART 中断函数
void USART1_IRQHandler(void)//串口1全局中断 {
unsigned char RxBuffer=0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//如果是接收中断 {
共分享92篇相关文档