初级会员

- 积分
- 112
- 金钱
- 112
- 注册时间
- 2018-2-28
- 在线时间
- 23 小时
|

楼主 |
发表于 2018-9-25 09:30:05
|
显示全部楼层
再把我的串口配置代码贴上来看下。
[mw_shl_code=applescript,true]void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
GPIO_InitTypeDef GPIO_InitStructure;
if( huart->Instance == USART2 )
{
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA的时钟
__HAL_RCC_USART2_CLK_ENABLE(); //使能USART2的时钟
//发送引脚的配置
GPIO_InitStructure.Pin = UART2_TX;
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStructure.Alternate = GPIO_AF7_USART2; //复用映射
HAL_GPIO_Init(GPIOA,&GPIO_InitStructure);
//接收引脚的配置
GPIO_InitStructure.Pin = UART2_RX;
// GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
// GPIO_InitStructure.Pull = GPIO_NOPULL;
// GPIO_InitStructure.Alternate = GPIO_AF7_USART2; //复用映射
HAL_GPIO_Init(GPIOA,&GPIO_InitStructure);
//NVIC的配置
//中断分组已经在HAL_Init()当中配置成功,是2
HAL_NVIC_SetPriority(USART2_IRQn, 1, 1); //设置中断优先级
HAL_NVIC_EnableIRQ(USART2_IRQn); //使能中断通道
}
}
void UART2_Init(uint32_t Baudrate) //串口2的配置
{
UART_Structure.Instance = USART2;
UART_Structure.Init.BaudRate = Baudrate;
UART_Structure.Init.WordLength = UART_WORDLENGTH_8B; //8位数据
UART_Structure.Init.StopBits = UART_STOPBITS_1; //1位停止位
UART_Structure.Init.HwFlowCtl = UART_HWCONTROL_NONE; //无硬件流控制
UART_Structure.Init.Mode = UART_MODE_TX_RX; //发送和接收模式
UART_Structure.Init.Parity = UART_PARITY_NONE; //不使用奇偶校验
HAL_UART_Init(&UART_Structure); //这个函数会调用HAL_UART_MspInit
//UART_Structure这个结构体变量已经指向了UART2
//HAL_UART_Receive_IT(&UART_Structure,&UARTRxBuffer,1);//使能串口接受中断
USART2->CR1 |= (uint8_t)0x20; //将RXNEIE置为1,开启接收中断
}
[/mw_shl_code] |
|