打印

关于SPI中断的意义

[复制链接]
6730|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
午夜霓虹|  楼主 | 2011-6-30 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在学习SPI中断的时候产生了一个疑问。
   操作过程:
               配置SPI设备和SPI借口。
              允许发送中断


中断服务程序

     等待发送完成
      发送数据
    等待接收完成
     接收数据

这样导致的结果就是,连续发送一串数据,总在中断里出不来,知道发送完毕,失去了用中断的意义了。

  原因是这样的,STM32发送寄存器空的时候产生中断,中断服务程序中,发送一次数据,然后等待接收完成,这时接收完成的时候,发送数据也完成了,发送缓冲器空了,用再次进入中断,直到数据发送完毕。

  有没有好的方法,中断只处理状态就退出,不用dma方式。
沙发
yzzly| | 2011-7-1 10:39 | 只看该作者
考,既然用了中断,干吗还要在中断函数内等待发送和接收完成?不是脱裤子放屁吗?
正确的做法是:在中断函数内只判别是发送中断还是接收中断并进行写数据和都数据。

使用特权

评论回复
板凳
airwill| | 2011-7-1 10:57 | 只看该作者
楼上正解.
其实楼主描述问题的时候, 已经找到了软件的缺陷了.
去掉等待. 让中断机制去等待好了

使用特权

评论回复
地板
午夜霓虹|  楼主 | 2011-7-1 16:03 | 只看该作者
关键就在这个地方,以前别的CPU,SPI中断是在发送完数据有个中断状态,而STM32没有,有个发送空中断,现在是不是考虑用接收完成中断,反正是很不习惯。

使用特权

评论回复
5
午夜霓虹|  楼主 | 2011-7-1 16:06 | 只看该作者
确实ST这么做非常灵活,只是还没有找到合适的方案来适合这么灵活的硬件。

使用特权

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

本版积分规则

57

主题

461

帖子

1

粉丝