硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7380|回复: 2
收起左侧

[有问必答] 各位大神求解,安富莱ZE-EK板用外部中断控制LED灯没反应

[复制链接]

4

主题

6

回帖

3

积分

新手上路

积分
3
发表于 2012-8-28 16:51:30 | 显示全部楼层 |阅读模式
mian.c代码如下:

#include "stm32f10x.h"
#include <stdio.h>

void GPIO_Configuration(void);
void EXTI_Configuration(void);
void Delay(__IO uint32_t nCount);
void NVIC_Configuration(void);

int main(void)
{
    SystemInit();            /*此函数在Libraries\CMSIS\Core\CM3\system_stm32f10x.c中*/
    NVIC_Configuration();   
    GPIO_Configuration();            
    EXTI_Configuration();                                                                    
    GPIO_ResetBits(GPIOF, GPIO_Pin_6|GPIO_Pin_7);
    while (1);
}   



void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);         
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;    //指定中断源
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7;      
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            
  NVIC_Init(&NVIC_InitStructure);
  }         


void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOF ,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &GPIO_InitStructure);    /* PG8 */

    GPIO_SetBits(GPIOF,  GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOF, &GPIO_InitStructure);
}

void EXTI_Configuration(void)
{
  EXTI_InitTypeDef EXTI_InitStructure;
  EXTI_ClearITPendingBit(EXTI_Line8);
  EXTI_InitStructure.EXTI_Line=EXTI_Line8;
  EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd=ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOG, GPIO_PinSource8);
}

void Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}

中断函数中添加函数如下:
void EXTI9_5_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line8)!= RESET)
  {
    GPIO_ResetBits(GPIOF,GPIO_Pin_8);
    EXTI_ClearFlag(EXTI_Line8);
   EXTI_ClearITPendingBit(EXTI_Line8);   
  }
}


是用板上的USER键(GPIOG,Pin8)控制中断的,但没反应,不知道什么问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2012-8-28 18:27:11 | 显示全部楼层
个人意见仅供参考:
我觉得这个问题,对于初学者,自己花点时间是可以解决的,楼后可以自己先试着解决一下,给自己一天的时间,好好的搞搞。网上资料很多的,这样更加有益于你的学习。
   要是还解决不了,我帮你解决
回复

使用道具 举报

4

主题

6

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2012-8-28 22:03:00 | 显示全部楼层

回 eric2013 的帖子

eric2013:个人意见仅供参考:
我觉得这个问题,对于初学者,自己花点时间是可以解决的,楼后可以自己先试着解决一下,给自己一天的时间,好好的搞搞。网上资料很多的,这样更加有益于你的学习。
   要是还解决不了,我帮你解决 (2012-08-28 18:27) 
谢谢你的意见[s:116]今晚再试一次又行了,不过我是没改代码的,就是搞不明白?能不能帮我看一下程序是不是有什么问题?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 00:27 , Processed in 0.149860 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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