完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序运行一段时间后,出现spi收不到数据的情况。
追踪进去查看,发现是在发送函数中执行到__HAL_LOCK(hspi)就跳出去了 查看SPI_HANDLER,state一直是busy,lock一直是locked 不知道为什么会出现lock之后没有unlock的情况 因为程序同时只会有一个地方调用SPI函数,所以我在每次发送前将state和lock的值修改了 这样修改之后就没有再出问题了 HAL库研究不深,不知道这是BUG还是我哪里处理有漏洞导致的。 |
|
相关推荐
2个回答
|
|
是不是地址没有被解析正确
|
|
|
|
使用HAL库SPI读不到数据的原因可能有以下几点:
1. SPI初始化配置错误:请检查SPI的初始化配置,确保时钟、数据位、极性、相位等参数设置正确。 2. SPI中断配置错误:如果使用中断方式进行SPI通信,请确保中断配置正确,如中断优先级、中断服务函数等。 3. SPI通信速率不匹配:请检查SPI的通信速率是否与从设备兼容。 4. SPI从设备未正确响应:请检查从设备是否正确连接并正常工作。 5. SPI总线冲突:请检查SPI总线上是否有其他设备干扰通信。 关于您提到的__HAL_LOCK(hspi)跳出问题,这可能是由于以下原因导致的: 1. 程序中存在多个地方调用SPI函数,导致SPI状态被其他任务占用。虽然您提到只有一个地方调用SPI函数,但请确保没有其他地方间接调用。 2. SPI中断服务函数中未正确处理状态和锁。请检查中断服务函数中的代码,确保在每次发送完成后,正确地解锁并更新状态。 3. SPI硬件故障:虽然较不常见,但不能完全排除硬件故障的可能性。请检查硬件连接和外围设备。 4. HAL库本身的问题:虽然HAL库通常很稳定,但不能完全排除库本身存在问题的可能性。您可以尝试升级到最新版本的HAL库,或者查看官方文档和社区讨论,看是否有类似问题的解决方案。 您提到修改了state和lock的值后没有再出问题,这可能是因为您的修改确保了SPI状态和锁的正确管理。但请注意,直接修改这些值可能不是最佳实践,因为HAL库本身应该已经处理了这些状态。建议您仔细检查程序逻辑,确保没有其他地方导致SPI状态和锁被错误地管理。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1810 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
737 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1687 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
748浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
583浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
566浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 06:12 , Processed in 0.829982 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号