打印
[其他ST产品]

请问HAL库如何设置SPI2一直使能接收中断?

[复制链接]
259|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2024-7-28 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用STM32的SPI2作为从设备,想中断接收数据,一直没调通。
现在使这样的,再主函数while(1)循环前,调用一次
HAL_SPI_Receive_IT(&hspi2, (uint8_t *)&spi2RecvBuff[0],2);
主循环里,现在基本清空了。SPI的接收回调函数里,通过串口发送一组数据,然后再调用
HAL_SPI_Receive_IT(&hspi2, (uint8_t *)&spi2RecvBuff[0],2);
想通过这种方法,使SPI2一直处于中断接收使能状态。

结果串口一直没有数据发送过来。用示波器测量SCK和MOSI,是有波形的,和主设备发过来的数据一致。

然后将以上的接收中断函数改成,发送中断函数,使设备不停的发送。
结果测量SCK和MISO,有对应波形,串口也有数据发过来。

是不是调用中断接收函数,还需要做些其他操作?

使用特权

评论回复
沙发
yutingwei| | 2024-7-29 00:22 | 只看该作者
您的代码逻辑基本正确,但可能有一些细节需要检查和确保正确配置。

使用特权

评论回复
板凳
yutingwei| | 2024-7-29 00:24 | 只看该作者
确保中断优先级正确设置,并且中断已经启用。在stm32f1xx_it.c文件中应该有相应的中断处理函数,比如SPI2_IRQHandler。

使用特权

评论回复
地板
laocuo1142|  楼主 | 2024-7-29 10:34 | 只看该作者
初始化SPI接口、配置中断优先级、使能中断、编写中断服务程序(ISR)以及编写接收完成回调函数。

使用特权

评论回复
5
lxs0026| | 2024-7-30 20:32 | 只看该作者
确保在主循环之前正确调用了HAL_SPI_Receive_IT函数以启用中断接收。

使用特权

评论回复
6
我爱台妹mmd| | 2024-7-31 23:12 | 只看该作者
确保NSS、SCK、MISO、MOSI连接正确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1188

主题

5182

帖子

12

粉丝