OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2853|回复: 2

STM32战舰板使用hal库无法进入串口接收中断

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-7-8
在线时间
0 小时
发表于 2020-7-8 23:59:42 | 显示全部楼层 |阅读模式
1金钱
之前一直使用的标准库,没啥问题,现在想要学习一下cubemx和hal库,结果搞了两天串口接收还没调通,可以正常发送,头大,之前L053用hal库做过,没遇到这种情况,实在没招,上网请教各位了。并不是所有中断都进不去,我试了定时器中断可以正常使用。


void Uart_Init(void)
{
        huart2.Instance = USART2;
        huart2.Init.BaudRate = 9600;
        huart2.Init.WordLength = UART_WORDLENGTH_8B;
        huart2.Init.StopBits = UART_STOPBITS_1;
        huart2.Init.Parity = UART_PARITY_NONE;
        huart2.Init.Mode = UART_MODE_TX_RX;
        huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  HAL_UART_Init(&huart2);
       
  HAL_UART_Receive_IT(&huart2,(u8 *)rxdata,1);   //开启串口接收中断
}

void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
        GPIO_InitTypeDef GPIO_Initstruct;
       
        if (huart->Instance == USART2)
        {
                __HAL_RCC_GPIOA_CLK_ENABLE();   //使能GPIOA时钟
                __HAL_RCC_USART2_CLK_ENABLE();   //使能USART2时钟
               
                //配置IO口模式
                //初始化GPIOA2,3
                GPIO_Initstruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
                GPIO_Initstruct.Mode = GPIO_MODE_AF_PP;
                GPIO_Initstruct.Pull = GPIO_PULLUP;
                GPIO_Initstruct.Speed = GPIO_SPEED_FREQ_HIGH;

                HAL_GPIO_Init(GPIOA, &GPIO_Initstruct);
               
                HAL_NVIC_SetPriority(USART2_IRQn,2,1);   //设置中断优先级
                HAL_NVIC_EnableIRQ(USART2_IRQn);   //使能USART2中断
        }

}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
        if (huart->Instance == USART2)
        {
                UartSendData(&huart2,data1,8);
        }
}

//串口2中断服务函数
void USART2_IRQHandler(void)
{
        HAL_UART_IRQHandler(&huart2);  //通用串口中断处理函数
        while(HAL_UART_Receive_IT(&huart2,(u8 *)rxdata,1)!=HAL_OK);   //开启串口中断
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-7-8
在线时间
0 小时
 楼主| 发表于 2020-7-9 00:17:01 | 显示全部楼层
已解决,PA3 IO口模式必须设置成GPIO_MODE_AF_INPUT,真的头大,按照F4的历程来的,完全没想到IO口模式居然会有区别
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-4-30
在线时间
4 小时
发表于 2020-8-6 15:22:08 | 显示全部楼层
hbcywf0101 发表于 2020-7-9 00:17
已解决,PA3 IO口模式必须设置成GPIO_MODE_AF_INPUT,真的头大,按照F4的历程来的,完全没想到IO口模式居然 ...

你好,我也遇到了这个问题,但是我IO口模式设置成AF_INPUT之后也不行。不知道为啥,如果可以的话,你可以帮我看看吗,我发了帖子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 02:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表