OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3159|回复: 4

这是个外部中断实验,当按键按下,LED亮,我没看懂是怎么把LED点亮的啊?哪个函数实现的?

[复制链接]

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-3-25 15:46:04 | 显示全部楼层 |阅读模式
3金钱

#include<stm32f10x.h>
#include "public.h"    //延时函数
#define GPIOLED (GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15)
#define GPIOKEY (GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7)

void RCCINIT()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);   
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}

void GPIOINIT()   
{

        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin=GPIOLED;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin=GPIOKEY;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
}

void EXTIINIT()     
{
       
        EXTI_InitTypeDef EXTI_InitStructure;
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
        EXTI_InitStructure.EXTI_Line=EXTI_Line0;
        EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
}

void NVICINIT()      
{
       
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

        NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;      
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     
        NVIC_Init(&NVIC_InitStructure);
}
int main()
{
        RCCINIT();   
        GPIOINIT();   
        EXTIINIT();   
        NVICINIT();   
       
        while(1);
}




最佳答案

查看完整内容[请看2#楼]

找到中断服务函数了,刚搜索了整个工程,找到这个函数在一个不起眼的文件里 void EXTI0_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line0)==SET) { EXTI_ClearITPendingBit(EXTI_Line0); delayms(10); if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)==Bit_RESET) { if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_8)==Bit_RESET) { //LED ϨÃe GPIO_SetBits(GPIOB,GPIO_Pin_8); ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-3-25 15:46:05 | 显示全部楼层
找到中断服务函数了,刚搜索了整个工程,找到这个函数在一个不起眼的文件里
void EXTI0_IRQHandler(void)       
{
  if(EXTI_GetITStatus(EXTI_Line0)==SET)
  {
           EXTI_ClearITPendingBit(EXTI_Line0);
        delayms(10);

        if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)==Bit_RESET)
        {
                if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_8)==Bit_RESET)
                {
                        //LED &#207;¨&#195;e
                   GPIO_SetBits(GPIOB,GPIO_Pin_8);       
                }
                else
                {
                  
                        GPIO_ResetBits(GPIOB,GPIO_Pin_8);
                }
        }
  }       
}
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7557
金钱
7557
注册时间
2016-11-30
在线时间
642 小时
发表于 2018-3-25 15:53:24 | 显示全部楼层
中断服务函数呢?
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-3-25 16:04:43 | 显示全部楼层
lvkanger 发表于 2018-3-25 15:53
中断服务函数呢?

关键就是这,没有中断服务函数,也没有LED相关操作,却实现了中断点亮LED的功能,我愣是没搞懂
回复

使用道具 举报

5

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-1-14
在线时间
26 小时
发表于 2018-5-10 02:00:27 来自手机 | 显示全部楼层
不是写了setBits吗?,中断里有了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-13 05:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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