记录学习stm32hal库的一些问题,与标准库的不同。

在此前博主一直采用的是stm32f103或是f407系列的单片机,后面转战h730发现没有标准库,于是开始学习hal库。

初识hal库时只觉得一片陌生,又要学习很多新的东西。但熟悉了之后还是觉得要方便一点。下面就学习hal库中遇到的问题做一些记录并给予解决方法。

1.hal库串口接收中断问题

在标准库中,我们配置好串口接收中断之后单片机会在接收数据后自动的进入USARTx_IRQHandl er中断函数之中,我们只需要在该函数中检测中断标志位再清楚标志位即可。

但是在使用hal库时,我第一次尝试在USARTx_IRQHandler中加入代码却发现没有起作用。原来是除了cubemx生成的代码之外我们还需要手动开启中断,并指定数据存放位置及接收长度。

HAL_UART_Receive_IT(&huart1,&Rxdata,1);

在hal库中,不能够在中断函数中检测标志位来运行相关的代码。但是hal库提供了相应的回调函数,我们能将功能代码在其中调用来实现中断调用,回调在stm32g4xx_hal_uart.c中可以找到,例如接收中断的回调函数:

HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

Q:开启之后发现能够正常的进入中断了,但是只能进入一次中断

A:需要在回调函数中重新开始接收中断。
 

2.中断优先度

开启uart或是其他功能时开启了NVIC但是却无法更改优先级,得去SystemCore->NVIC中修改优先级

3.使用printf卡死,程序无法正常运行

点击魔法棒,在Target选项卡中勾选使用Use MicroLIB。这个要注意,一不小心就会卡你很多时间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值