STM32模块初始化模版和函数寄存器汇总 联系客服

发布时间 : 星期六 文章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)//如果是接收中断 {