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

STM32F103CBT6 外部中断无法触发

[复制链接]
salfe 提问时间:2015-5-14 16:16 /
请各位指教,在配置完SPI1,再去配置外部中断无法被触发,有试过把SPI1配置拿掉,外部中断就可以被触发了,以下是几个相关的函数。系统时钟配置都是默认的。帮忙看下,感谢外部中断配置:
void EXTI_B4_CONFIG(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;
        GPIO_InitTypeDef        GPIO_InitStructure;
        //NVIC_InitTypeDef NVIC_InitStruture;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
        
                //config the IRQ pin,B0
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
        //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//IP IPD IPU
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        
        ///RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//
        
        EXTI_ClearITPendingBit(EXTI_Line4);

        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource4);

        EXTI_InitStructure.EXTI_Line=EXTI_Line4;//
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//falling edge trigger interrupt

        EXTI_Init(&EXTI_InitStructure);
}


SPI1配置:
void SPI1_CONFIG(void)
{
        SPI_InitTypeDef                 SPI_InitStructure;
        GPIO_InitTypeDef        GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);

        //config the sck ,MISO,MOSI pin
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
        //config ce pin,A4
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
        //config the CS pin,A3
        //GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
        //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        //GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        //GPIO_Init(GPIOA, &GPIO_InitStructure);

        SPI_CS_H();

        SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
        SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
        SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
        SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
        SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8;
        SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial=7;
        SPI_Init(SPI1, &SPI_InitStructure);
        
        SPI_Cmd(SPI1, ENABLE);        
}



NVIC 配置:
void NVIC_Config(void)
{
        //config nrf24l01 interrupt
        NVIC_InitTypeDef NVIC_InitStruture;
        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

        NVIC_InitStruture.NVIC_IRQChannel=EXTI4_IRQn;//EXTI9_5_IRQn;
        NVIC_InitStruture.NVIC_IRQChannelPreemptionPriority=1;//抢占优先级
        NVIC_InitStruture.NVIC_IRQChannelSubPriority=2;//响应优先级
        NVIC_InitStruture.NVIC_IRQChannelCmd=ENABLE;

        NVIC_Init(&NVIC_InitStruture);

        NVIC_SetPriority(SysTick_IRQn,NVIC_EncodePriority(NVIC_PriorityGroup_2, 2,0));

        //NVIC_EnableIRQ(SysTick_IRQn);

        NVIC_InitStruture.NVIC_IRQChannel=TIM3_IRQn;
        NVIC_InitStruture.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级
        NVIC_InitStruture.NVIC_IRQChannelSubPriority=1;//响应优先级
        NVIC_InitStruture.NVIC_IRQChannelCmd=ENABLE;

        NVIC_Init(&NVIC_InitStruture);
}

<
收藏 评论39 发布时间:2015-5-14 16:16

举报

39个回答
为什么是EEFOCUS小白 回答时间:2015-5-14 16:49:36
不懂帮顶
ynwscfsfi 回答时间:2015-5-15 00:47:36
不懂用库……
sting 回答时间:2015-5-15 12:29:29
先配置外部中断,再配置SPI。或是在SPI1_CONFIG里,增加RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
。这样试试看
salfe 回答时间:2015-5-15 13:24:11
sting 发表于 2015-5-15 12:29
先配置外部中断,再配置SPI。或是在SPI1_CONFIG里,增加RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABL ...

目前我把SPI 跟中断合在一起配置,结果还是触发不了
void SPI1_CONFIG(void)
{
        SPI_InitTypeDef                 SPI_InitStructure;
        GPIO_InitTypeDef        GPIO_InitStructure;
       
        EXTI_InitTypeDef EXTI_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);

        //config the sck ,MOSI pin
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        //config the ,MISO
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
        //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        //config ce cspin,A4
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_3;
        //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING;//GPIO_Mode_IPU;//IP IPD IPU
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
               
                ///RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//
               
        EXTI_ClearITPendingBit(EXTI_Line12);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12);
       
        EXTI_InitStructure.EXTI_Line=EXTI_Line12;//
        EXTI_InitStructure.EXTI_LineCmd=ENABLE;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//falling edge trigger interrupt
       
        EXTI_Init(&EXTI_InitStructure);

       
        //RCC_MCOConfig(RCC_MCO_HSE);

        SPI_CS_H();

        SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
        SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
        SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
        SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
        SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8;//PCLK/8
        SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial=7;
        SPI_Init(SPI1, &SPI_InitStructure);
       
        SPI_Cmd(SPI1, ENABLE);       
}
回答时间:2015-5-15 14:43:30
SPI_CS_H();这个代码写的是什么。
salfe 回答时间:2015-5-15 14:52:01
安 发表于 2015-5-15 14:43
SPI_CS_H();这个代码写的是什么。

这句写的是把CS pin 拉high,CS pin 定义的是PA3,CE pin 定义的PA4
回答时间:2015-5-15 16:12:41
你把这个代码发一下,别写成了PB4。
salfe 回答时间:2015-5-15 16:39:18
安 发表于 2015-5-15 16:12
你把这个代码发一下,别写成了PB4。

谢谢版主 如此帮忙

Quadrotor FOR EXTI BUG.rar

下载

5.51 MB, 下载次数: 6, 下载积分: ST金币 -1

这是我的工程

1234下一页

所属标签

相似问题

官网相关资源

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