[STM8] STM8 SPI中断问题求助!!

[复制链接]
7920|11
 楼主| lxm8happy 发表于 2009-10-23 09:13 | 显示全部楼层 |阅读模式
请教一下以下问题:
        在调试SPI中断通信时,发现发送空中断标志一直为1,清不掉。
    想问一下如何同时使用SPI的发送中断和接收中断?
    SPI如何接收?
    中断标志位如何清除?在什么条件下会自动清除?

   谢谢!
superzhang 发表于 2010-9-2 11:23 | 显示全部楼层
我也遇到了这个问题,使能SPI_ICR 寄存器的TXIE位后,就持续地进中断,其他什么事情都干不了。如何清除中断标志?
superzhang 发表于 2010-9-2 11:28 | 显示全部楼层
另外,中文版的RM0016中最后一句话没法理解,但英文版没有这句
TXIE:Tx缓冲空中断
0:TXE中断禁止
1:TXE中断使能。当TXE标志置位时,允许产生中断请求
注意:为了正确地运行,TXIE为要同时设置为1
superzhang 发表于 2010-9-2 11:30 | 显示全部楼层
这里是英文版的说明文字:
Bit 7 TXIE: Tx buffer empty interrupt enable
0: TXE interrupt masked
1: TXE interrupt not masked. This allows a interrupt request to be generated when the TXE flag is
set.
香水城 发表于 2010-9-2 11:40 | 显示全部楼层
中文版的翻译是依据英文第4版,正是因为那句话有问题,所以在英文第6版中已经把那句话删除了,而你看的英文版正是第6版。
superzhang 发表于 2010-9-2 11:51 | 显示全部楼层
谢谢香水城这么快的回复。进入中断后我如何清除SPI的中断标志?我现在持续的进SPI发送结束中断,无法退出
香水城 发表于 2010-9-2 12:29 | 显示全部楼层
TXE是发送缓冲器空标志,只要在DR寄存器写入数据,就会清除这个标志。
有意思 发表于 2010-9-5 14:46 | 显示全部楼层
芯片设计理念问题,SPI的发送空中断,和其他理念不太一样,一般来说,DR冲有到无产生一个中断,而STM的是只要空就是1,产生中断,我也是研究了半天才弄明白??
void SPI_InterruptISR(void)
{
    //u8 temp;
    P_SPIfdstr fd=&exspifd;

    if (SPI->SR & SPI_FLAG_RXNE) {
        if (!fd->full) {
            fd->Rxbuff[fd->front++] = (u8)SPI->DR;
            fd->front %= MAXSPIRXDBUFFSIZE;
            if (fd->front == fd->rear)
                fd->full = 1;
        }
    }

    if (SPI->SR & SPI_FLAG_TXE) {
        if (fd->full || (fd->write != fd->read)) {
            SPI->DR = fd->Txbuff[fd->read++];
            fd->read %= MAXSPITXDBUFFSIZE;
            fd->full = 0;
        } else {
            SPI_ITConfig(SPI_IT_TXE, DISABLE);//缓冲区数据发送完成后,关闭中断,再次发送时打开
        }
    }        
}

void spi_send_buf(u8 *buf, u8 len)
{
    u8 i=0;
    P_SPIfdstr fd=&exspifd;

    for (i=0; i<len; i++) {
        fd->Txbuff[fd->write++] = *buf++;
        fd->write %= MAXSPITXDBUFFSIZE;
    }

    //SPI->DR = fd->Txbuff[fd->read];
    SPI_ITConfig(SPI_IT_TXE, ENABLE);
}
kenmy 发表于 2013-12-25 16:09 | 显示全部楼层
有意思 发表于 2010-9-5 14:46
芯片设计理念问题,SPI的发送空中断,和其他理念不太一样,一般来说,DR冲有到无产生一个中断,而STM的是只 ...

谢谢楼主的提示,SPI中断正常了
zhaor 发表于 2014-1-3 16:14 | 显示全部楼层
有意思版主,能提供以下你的这个完整的程序吗?
风轻云淡的日子 发表于 2017-1-4 17:22 | 显示全部楼层
huangcunxiake 发表于 2017-1-4 20:05 | 显示全部楼层
有不少单片机的数据收发器都是接收器的接收中断,在你读走了数据后自动清零。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部