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

STM32F103VCT6的SPI1数据发送和接收问题

[复制链接]
LeoZhou34 提问时间:2015-3-24 12:59 /
各位大侠,我刚开始接触STM32F103VCT6,关于SPI1的数据发送的一些疑问,请帮忙!写了一个测试程序(SPI Master Mode),每秒定时发送数据,SPI部分的程序如下:

/* SPI1初始化*/
       GPIO_InitTypeDef  GPIO_InitStruct;
       SPI_InitTypeDef    SPI_InitStruct;
       NVIC_InitTypeDef  NVIC_InitStruct;

        /* Enable GPIOA and SPI1 clock */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
        
        /* Enable the SPI1 Pins Software Remapping */
        GPIO_PinRemapConfig(GPIO_Remap_SPI1, DISABLE);
        
        /* Connect PXx to SPI1_NSS(PA.4) */
        GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_4;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
        GPIO_SetBits(GPIOA, GPIO_Pin_4);
            
        /* Connect PXx to SPI1_SCK(PA.5) and SPI1_MOSI(PA.7) */
        GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_7 | GPIO_Pin_5;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
        
        /* Connect PXx to SPI1_MISO(PA.6) */
        GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
        
        /* SPI1 configuration -------------------------------------*/
        SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
        SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
        SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
        SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;
        SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;
        SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;
        SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
        SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
        SPI_InitStruct.SPI_CRCPolynomial = 7;
        SPI_Init(SPI1, &SPI_InitStruct);
        SPI_I2S_ITConfig(SPI1, SPI_I2S_IT_RXNE, ENABLE);
        SPI_Cmd(SPI1, ENABLE);
        
        /* NVIC configuration */
        /* Configure the Priority Group to 2 bits */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  
        /* Enable the SPI1 Interrupt */
        NVIC_InitStruct.NVIC_IRQChannel = SPI1_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);

主程序中每1s进行SPI1数据发送。

       if(net_spi1_flag == 1)
        {
            net_spi1_flag = 0;
            GPIO_ResetBits(GPIOA, GPIO_Pin_4);
            
            for(test_num=0; test_num<255; test_num++)
            {
                for(test_len=0; test_len<255; test_len++)
                {
                    SPI_I2S_SendData(SPI1, net_spi1_data[test_len]);
                      while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
                }
            }
                        
            GPIO_SetBits(GPIOA, GPIO_Pin_4);
         }

问题:在程序中只开启了SPI1得接收中断,而没有开启发送中断,每次SPI1发送数据时,都会进入到SPI1中断服务程序中。SPI1的中断服务程序如下:
void SPI1_IRQHandler(void)
{
   static uint8_t spi_num=0;
      
    if(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) != RESET)
    {
       spi_num++;
    }
}

请不吝赐教!



收藏 评论8 发布时间:2015-3-24 12:59

举报

8个回答
stary666 回答时间:2015-3-24 13:05:48
帮顶。。。。。。。。。。。。。
小蚂蚁快溜跑 回答时间:2015-3-24 13:07:28
还不会,帮顶
wh854997179 回答时间:2015-3-24 14:18:50
帮顶
楼主你去群里问问
wxd123com 回答时间:2015-3-24 15:09:55
发送是clok上有没有波形?
回答时间:2015-3-24 15:12:00
楼主看一下进入中断以后,中断寄存器的值  SPI 状态寄存器(SPI_SR)
zfz0122 回答时间:2015-3-25 08:51:13
嗯。打印寄存器值看看有没有变化 3.gif
木木鱼 回答时间:2015-3-25 09:03:10
不懂,帮顶
zhangdaijin 回答时间:2015-3-25 09:33:31
学习了!!!

所属标签

相似问题

官网相关资源

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