大神帮忙看看哪里错了 中断不了 stm32103fc6t6

   
void EXTI0_Config(void)
{
   EXTI_InitTypeDef   EXTI_InitStructure;
   GPIO_InitTypeDef   GPIO_InitStructure;
   NVIC_InitTypeDef   NVIC_InitStructure;
   
   
  /* Enable GPIOA clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//  *(uint32_t *)(0x40021000+0x18)|=(1<<2);   //gpioA 时钟使能
  
  
      /* Enable AFIO clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//  *(uint32_t *)(0x40021000+0x18)|=(1<<0); 
  
  
  
  
  /* Configure PA.00 pin as input floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
//  *(uint32_t *)(0x40010800+0x00)|=(8<<0); 
//  *(uint32_t *)(0x40010800+0x0c)|=(1<<0);



  /* Connect EXTI0 Line to PA.00 pin */
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);

  /* Configure EXTI0 line */
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

      /* Enable and set EXTI0 Interrupt to the lowest priority */  
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);


}

中断头文件

#ifndef __EXTI_H__
#define __EXTI_H__


#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_exti.h"
#include "misc.h"




void EXTI0_Config(void);



#endif

 

LED驱动.c


#include "led.h"

void LED_INIT()
{
//	*(uint32_t *)(0x40021000+0x18)|=(1<<4);   //gpioc 时钟使能
  //GPIO端口时钟使能
  RCC_APB2PeriphClockCmd(RCC_LED_POART, ENABLE);
  
  
    //*(uint32_t *)(0x40011000+0x04)|=(3<<20); //pc13 端口配置高寄存器crh推挽输出50M
  //GPIO端口初始化
  GPIO_InitTypeDef LED_ON={LED_PIN,GPIO_Speed_50MHz,GPIO_Mode_Out_PP};
  GPIO_Init(LED_POART, &LED_ON);
}

  
  //LED状态切换
void LED_SWAP()
{
  
  //GPIO_WriteBit(LED_POART,LED_PIN, Bit_RESET);
  //GPIO_ResetBits(LED_POART,LED_PIN);
  //GPIO_SetBits(LED_POART,LED_PIN);
  if(GPIO_ReadInputDataBit(LED_POART,LED_PIN)==0)
  {
    GPIO_SetBits(LED_POART,LED_PIN);
  }
  else
  {
    GPIO_ResetBits(LED_POART,LED_PIN);
  }
}

  //LED灭
void LED_OFF()
{
  //*(uint32_t *)(0x4001100c)|=(1<<13);  //pc13 odr 置1
  GPIO_SetBits(LED_POART,LED_PIN);
}


//LED亮
void LED_ON()
{
        
          //*(uint32_t *)(0x40011000+0x0c)&=~(1<<13); //pc13 odr 置0
  GPIO_ResetBits(LED_POART,LED_PIN);
}

//呼吸灯
void LED_Breathing()
{
    uint16_t t;
    
    
    for(t=1;t<1200;t++)
    {
        LED_ON();
        delay_us(t);
        LED_OFF();
        delay_us(1200-t);     
    }
    for(t=1;t<1200;t++)
    {
        LED_ON();
        delay_us(1200-t);
        LED_OFF();
        delay_us(t);
    }

    
}


led驱动.h

#ifndef __LED_H__
#define __LED_H__

#include "stm32f10x_gpio.h"
#include "delay.h"

#define LED_POART GPIOC  //端口
#define RCC_LED_POART RCC_APB2Periph_GPIOC //端口时钟
#define LED_PIN GPIO_Pin_13 //pin脚

void LED_INIT();
void LED_SWAP();   //LED切换
void LED_ON();   //LED亮
void LED_OFF();   //LED灭
void LED_Breathing();  //lED呼吸灯
#endif //__LED_H__

主函数



int main()
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    //RCC->APB2ENR|=(1<<4);
    EXTI0_Config();
    LED_INIT();
    
    
    //GPIOC->CRH|=(3<<20);
    
    
    //GPIOC->ODR&=~(1<<13);
    

  
  return 0;
}

void EXTI0_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0) == SET)
    {
        LED_SWAP();
//        delay_ms(100);
        EXTI_ClearITPendingBit(EXTI_Line0);
        //EXTI_ClearFlag(EXTI_Line12);  
    }
        
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值