在线时间2 小时
UID3632693
ST金币13
蝴蝶豆0
注册时间2020-9-28
该用户从未签到
新手上路
- 最后登录
- 2020-10-2
|
void usart_Config(void)
{
/*----------------串口配置----------------*/
GPIO_InitTypeDef GPIO_Struct;
USART_InitTypeDef USART_Struct;
NVIC_InitTypeDef USART_NVIC_Struct;
//打开gpio时钟和串口时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
//配置复用功能
GPIO_PinAFConfig(GPIOB,GPIO_PinSource10, GPIO_AF_USART3);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource11 , GPIO_AF_USART3);
//gpio初始化
GPIO_Struct.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
GPIO_Struct.GPIO_Mode = GPIO_Mode_AF;
GPIO_Struct.GPIO_OType = GPIO_OType_PP;
GPIO_Struct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Struct.GPIO_Speed = GPIO_Speed_50MHz;
//把结构体初始化参数传给寄存器
GPIO_Init(GPIOB, &GPIO_Struct);
/*----------------串口配置-------------------*/
USART_Struct.USART_BaudRate = 115200;
USART_Struct.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_Struct.USART_Mode = USART_Mode_Tx;
USART_Struct.USART_Parity = USART_Parity_No;
USART_Struct.USART_StopBits = USART_StopBits_1;
USART_Struct.USART_HardwareFlowControl = USART_HardwareFlowControl_None ;
USART_Init(USART3, &USART_Struct);
USART_Cmd(USART3, ENABLE);
//使能串口接收中断
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //开启相关中断
USART_NVIC_Struct.NVIC_IRQChannel = USART3_IRQn ;
USART_NVIC_Struct.NVIC_IRQChannelPreemptionPriority =3;
USART_NVIC_Struct.NVIC_IRQChannelSubPriority = 3;
USART_NVIC_Struct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&USART_NVIC_Struct);
}
void USART_SendByte(USART_TypeDef* USARTx, uint8_t Data)
{
USART_SendData(USARTx, Data);
while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
}
//main函数
int main(void)
{
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 );
usart_Config();
USART_SendByte(USART3, 0xFF);
while(1);
}
使用的市stm32f407系列的,使用串口3.USB转串口使用的市CP2102芯片。发送的数据和接收的数据不同。一直没找到原因。请求大神帮助。
|
|