FreeRtos与Hal错误洞察与化解之术

1.HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)与HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)相对应,如果忘记停止DMA接收下次打开是肯定会失败的,在由于用户交互时最应该注意。

在实际使用过程中关于HAL提供的驱动最好对于返回值都加上错误处理方便定位问题。

2.不同的串口的接收最好不要写统一的公共函数,不然最后很难改,除非所有串口的接受与发送确实可以套用同一套机制,比如DMA+任务通知或者DMA+队列(实际还有更多)

3.任务通知对于任务与任务之间确实很方便,但是对于数据可能不会那么安全,队列对于水安全,但是效率不会很高

4.64M的W25QXXX的擦除时间在Freertos操作系统下需要至少两分半(实际测试下来有长有短,可能是因为其他任务没挂起,因为是实时系统,测试下来擦除对数据输出没什么影响就没有加挂起操作,加上用户体验感也不会很好),所以网上的驱动对于擦除时间的设置100s可能是不够的,会导致擦除失败,擦除失败会导致初始化失败,硬件初始化失败最好也暴露出来,写失败的原因要么地址不对要么初始化没成功,针对内部flash有些写失败可能是字节没对齐,外部目前没遇到过要求按照字节对齐的情况

擦除失败也有可能是地址设置的不对,如果地址超出了实际地址也会出问题,最好在调试阶段观察一下真正的擦除地址设置是否正确

对于异常并不是一定不会发生,所以异常信息一定要暴露出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值