void init_usart(void)
//RCC初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,,ENABLE);//使能GPIOA时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
//nvic
NVIC_ InitTypeDef NVIC_InitStructure;#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM,Ox0);#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH,Ox0);#endif
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = o;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_lnitStructure);
//GPIO初始化
GPIO_IlnitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_IlnitStructure.GPIO_Speed = GPIO_Speed_5OMHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_5OMHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA,&GPIO_InitStructure);
//USART初始
//USART_DeInit(USART2);
USART_InitTypeDef USART_InitStructure;
//串口设置恢复默认参数
USART_ClockInitTypeDef USART_ClocklnitStructure;
USART_InitStructure.USART_BaudRate = 9600;
//波特率9600
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长8位USART_InitStructure.USART_StopBits = USART_StopBits_1;
//1位停止字节
USART_InitStructure.USART_Parity = USART_Parity_No;
川/无奇偶校验
USART_IlnitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//打开Rx接收和Tx发送功能
USART_ClockInitStructure.USART_Clock =USART_Clock_Disable;USART_ClockInitStructure.USART_CPOL =USART_CPOL_High;USART_ClockInitStructure.USART_CPHA =USART_CPHA_2Edge;USART_ClocklnitStructure.USART_LastBit =USART_LastBit_Disable;USART_Clocklnit(USART2,&USART_ClockInitStructure);
USART_Init(USART2,&USART_InitStructure);
//初始化
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断,这个必须在打开串口之前设置USART_Cmd(USART2,ENABLE);
/启动串口
void USART2_IRQHandler(void)
//接收中断
if(USART_GetlTStatus(USART2,USART_IT_RXNE)==SET)(
USART_ClearlTPendingBit(USART2,USART_IT_RXNE);usart_rx=USART_ReceiveData(USART2);
usart_rx_flag=1;
}
//溢出-如果发生溢出需要先读SR,再读DR寄存器则可清除不断入中断的问题[牛人说要这样]if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
USART_ClearFlag(USART2,USART_FLAG_ORE);//读SR其实就是清除标志USART_ReceiveData(USART2);//读DR
}
}
上一篇:stm32任务调度和管理
下一篇:关于STM32半主机机制的作用
推荐阅读最新更新时间:2026-03-21 10:47
- LM2904DMR2G 函数发生器运算放大器的典型应用
- DEMO9RS08KA2: DEMO9RS08KA2 Demonstration Board
- MCP73871EV,MCP73871 锂离子电池充电器评估板
- STEVAL-IHM039V1,采用 STM32F415 微控制器的双电机控制演示板
- LTC1606CG 演示板、16 位、250ksps ADC
- RT8086B 3.5A、1.2MHz、同步降压转换器的典型应用
- TS4999EIJT 典型应用 免滤波器立体声 2.8 W D 类音频功率放大器,可选择 3D 音效
- LTM4615,采用 15mm-15mm 封装的完整双路和三路输出负载点模块稳压器
- LTC2415-1IGN 24 位 ADC 的典型应用电路使用电阻器阵列在励磁放大器中提供精确匹配
- 使用 Analog Devices 的 LTC1450LIN 的参考设计

STM32模拟串口
dm9000cep网卡通信
现代雷达系统的信号设计
EL5624IRE-T13
BFR340T






京公网安备 11010802033920号