STM32 CUBE MX生成HAL库的串口中断

今天尝试使用HAL库的串口中断,发现使用HAL库默认的中断服务函数异常的复杂和艰辛,只能进入一次中断而且会发生各种状况。所以尝试不用默认HAL库的中断服务函数编写方式。

  1. 配置好串口,使能中断
  2. 使用以下语句开启接受或发送中断
HAL_UART_Receive_IT(&huart1, Rxdata, 1);//接受数据中断
 HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)//传输数据中断

其中第一个参数是初始化串口时的通过结构体配置的变量地址,可自行修改。第二个参数是接受或发送缓存器,可自定 义数组。第三个参数是接受或发送几个字节而产生中断。

  1. 通过启动文件:starup_stm32f103xe.s找到相应的串口中断函数USART1_IRQHandler,通过寻找定义找到HAL库的中断服务函数并注释掉HAL_UART_IRQHandler(&huart1)。通过函数__HAL_UART_GET_FLAG()来判断相应的标志位是否为1。其中第一个参数为初始化串口时的通过结构体配置的变量地址,第二个参数为相应标志位,具体可查阅库函数里的注释。这里给出接受数据产生中断而挂起的标志位判断if((__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)!=0))。之后便可以通过DR寄存器来查看接受的数据:USART1->DR编写中断服务函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值