初级会员

- 积分
- 199
- 金钱
- 199
- 注册时间
- 2017-7-23
- 在线时间
- 51 小时
|
5金钱
直接上代码了
//初始化IO 串口1
//bound:波特率
void CPT_init(u32 bound)
{
//UART 初始化设置
CPT_Handler.Instance = USART1; //USART1
CPT_Handler.Init.BaudRate = bound; //波特率
CPT_Handler.Init.WordLength = UART_WORDLENGTH_8B; //字长为8位数据格式
CPT_Handler.Init.StopBits = UART_STOPBITS_1; //一个停止位
CPT_Handler.Init.Parity = UART_PARITY_NONE; //无奇偶校验位
CPT_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE; //无硬件流控
CPT_Handler.Init.Mode = UART_MODE_TX_RX; //收发模式
HAL_UART_Init(&CPT_Handler); //HAL_UART_Init()会使能UART1
LL_USART_EnableIT_RXNE(CPT_Handler.Instance); //开启接收中断
}
//UART底层初始化,时钟使能,引脚配置,中断配置
//此函数会被HAL_UART_Init()调用
//huart:串口句柄
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_Initure;
if(huart->Instance==USART1)//如果是串口1,进行串口1 MSP初始化
{
__HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟
__HAL_RCC_USART1_CLK_ENABLE(); //使能USART1时钟
GPIO_Initure.Pin=GPIO_PIN_9; //PA9
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //高速
GPIO_Initure.Alternate=GPIO_AF7_USART1; //复用为USART1
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化PA9
GPIO_Initure.Pin=GPIO_PIN_10; //PA10
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化PA10
HAL_NVIC_EnableIRQ(USART1_IRQn); //使能USART1中断通道
HAL_NVIC_SetPriority(USART1_IRQn,3,3); //抢占优先级3,子优先级3
}
}
unsigned char Rx = 0;
void USART1_IRQHandler(void)
{
if(LL_USART_IsActiveFlag_RXNE(CPT_Handler.Instance))
{
Rx = LL_USART_ReceiveData8(CPT_Handler.Instance);//这里接收到的数据不正确,不知道是什么原因
}
}
|
|