野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11666|回复: 3

按键中断改变led求大神帮助 看下我的简单代码

[复制链接]
发表于 2016-7-26 11:21:36 | 显示全部楼层 |阅读模式
本帖最后由 淼飞飞 于 2016-7-26 11:22 编辑

看到论坛,如鱼得水。我想用PB12(按键)控制PC0(LED)好几天都没有成功求大神看看哪里错了啊
#include"stm32f10x_lib.h"               
#include<stdio.h>


void RCC_Configuration(void);
void GPIO_Configuration(void);
void EXTI_Configuration(void);
void NVIC_Configuration(void);

int main(void)
{        
               
        RCC_Configuration();
        GPIO_Configuration();
        EXTI_Configuration();
        NVIC_Configuration();
        while(1);
}


void RCC_Configuration(void)
{
      
        ErrorStatus HSEStartUpStatus;

      
          RCC_DeInit();
   
          RCC_HSEConfig(RCC_HSE_ON);
   
          HSEStartUpStatus = RCC_WaitForHSEStartUp();

          if(HSEStartUpStatus == SUCCESS)
          {
         
            RCC_HCLKConfig(RCC_SYSCLK_Div1);
        
            RCC_PCLK2Config(RCC_HCLK_Div1);
     
            RCC_PCLK1Config(RCC_HCLK_Div2);
     
            FLASH_SetLatency(FLASH_Latency_2);

            FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
            RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
      
            RCC_PLLCmd(ENABLE);
   
            while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        
            while(RCC_GetSYSCLKSource() != 0x08);
          }  

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);        //ê1&#196;üAPB2íaéèμ&#196;GPIOCμ&#196;ê±&#214;ó
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}

void GPIO_Configuration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
        GPIO_ResetBits(GPIOC,GPIO_Pin_0);
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
        GPIO_Init(GPIOB, &GPIO_InitStructure);        
}
void EXTI_Configuration(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;
        EXTI_DeInit();           
        EXTI_ClearITPendingBit(EXTI_Line12);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12);
        EXTI_InitStructure.EXTI_Line = EXTI_Line12;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
}
void NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

---------------------------这是中断--------------------------------------
void EXTI15_10_IRQHandler(void)
{
        if(EXTI_GetFlagStatus(EXTI_Line12)!=RESET)
        {
                GPIO_SetBits(GPIOC,GPIO_Pin_0);
                EXTI_ClearITPendingBit(EXTI_Line12);
        }
        
}

原理图.jpg
回复

使用道具 举报

 楼主| 发表于 2016-7-26 11:23:18 | 显示全部楼层
求大神指点啊  
回复 支持 反对

使用道具 举报

发表于 2016-7-26 11:51:46 | 显示全部楼层
这个不是直接按例程来改就可以了吗。。完全一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-26 12:16:24 来自手机 | 显示全部楼层
南门静美 发表于 2016-7-26 11:51
这个不是直接按例程来改就可以了吗。。完全一样的

我这个按别人视频写的。不知道哪里错了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-13 15:48 , Processed in 0.028979 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表