你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
any012 提问时间:2016-11-24 09:28 /
阅读主题, 点击返回1楼
收藏 2 评论35 发布时间:2016-11-24 09:28
35个回答
衔胆栖冰 回答时间:2016-11-24 19:00:32
楼主,你自己顶了那么多。我也没时间看那么多。你调用的接收函数原型是HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)。这个跟标准库不一样的是,你调用这个函数,就会一直等待接收完Size个字节。你调用这个函数之后,再去while轮询访问接收寄存器当然读不到数据了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

peter001 回答时间:2016-11-25 00:12:43
帮顶
any012 回答时间:2016-11-25 08:45:20
衔胆栖冰 发表于 2016-11-24 19:00
楼主,你自己顶了那么多。我也没时间看那么多。你调用的接收函数原型是HAL_StatusTypeDef HAL_SPI_Receive_ ...

没有在while(1)里轮询访问接收寄存器,而是在接收完成回调函数里,想再次调用这个函数,结果却不行。现在是放到void SPI2_IRQHandler(void)里了,暂时能用了。但想不明白为什么放到回调函数里却不行,从串口发上来的数看,应该是中断了2次才调用了一次回调函数。可能我设置还是有问题。
zbber 回答时间:2016-11-25 11:38:02
放到SPI2_IRQHandler

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

any012 回答时间:2016-11-25 11:48:28
zbber 发表于 2016-11-25 11:38
放到SPI2_IRQHandler

现在确实是这样做的,但好奇,为什么放到回调函数里就出问题?
zxcscm 回答时间:2016-11-25 13:32:03
关注中,也遇到类似的问题,中断始终进不了。都快放弃hal库了
衔胆栖冰 回答时间:2016-11-25 16:06:24
zxcscm 发表于 2016-11-25 13:32
关注中,也遇到类似的问题,中断始终进不了。都快放弃hal库了

用DMA,速度杠杠的,我两路同时发送接收,每路40M bit/s,相当于单路80M bit/s,有没有很变态
衔胆栖冰 回答时间:2016-11-25 16:06:51
zxcscm 发表于 2016-11-25 13:32
关注中,也遇到类似的问题,中断始终进不了。都快放弃hal库了

用DMA,速度杠杠的,我两路同时发送接收,每路40M bit/s,相当于单路80M bit/s,有没有很变态
any012 回答时间:2016-11-25 16:33:43
衔胆栖冰 发表于 2016-11-25 16:06
用DMA,速度杠杠的,我两路同时发送接收,每路40M bit/s,相当于单路80M bit/s,有没有很变态 ...

没接触过DMA,也曾考虑过DMA。但有个疑问,我这个是作为接收设备,需要判断帧首,长度的。用DMA的话,只能循环接收吧?
any012 回答时间:2016-11-25 16:58:11
接收是固定长度,且有帧头的;发送同样是固定长度且有帧头,并且,还需要接收帧头时,发送的也是发送帧的帧头。
我觉得DMA不好实现吧。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版