野火电子论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 57|回复: 0

[F1-霸道] 中断方式按键点灯实验

[复制链接]
发表于 2020-1-15 10:33:03 | 显示全部楼层 |阅读模式
本帖最后由 老光头 于 2020-1-15 10:46 编辑

/*
中断方式按键点灯实验
按键,A口0脚输入
led,B口0脚输出
开机led灯亮
按一下灭再按一下亮
*/
#include "stm32f10x.h"

void EXTI0_IRQHandler(void) //中断处理函数
{
        if(EXTI_GetITStatus(EXTI_Line0) != RESET) //确实中断事件
        {
                if (!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)) //检测led亮
      GPIO_SetBits(GPIOB,GPIO_Pin_0);//关闭led
                else GPIO_ResetBits(GPIOB,GPIO_Pin_0);//打开led
                EXTI_ClearITPendingBit(EXTI_Line0);//清除中断标志
        }  
}

int main(void)
{
    GPIO_InitTypeDef gpiojiegouti;//定义输入输出结构体
    EXTI_InitTypeDef extijiegouti;//定义外部中断结构体
    NVIC_InitTypeDef nvicjiegouti;//定义中断控制结构体

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//打开AB端口外部中断时钟

    //端口输入输出配置
    gpiojiegouti.GPIO_Pin=GPIO_Pin_0;//0号引脚
    gpiojiegouti.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
    gpiojiegouti.GPIO_Speed=GPIO_Speed_10MHz;//输出速度
    GPIO_Init(GPIOB, &gpiojiegouti);//设置B端口
    gpiojiegouti.GPIO_Mode=GPIO_Mode_IN_FLOATING;//悬浮输入
    GPIO_Init(GPIOA, &gpiojiegouti);//设置A端口

    //外部中断事件配置
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);//A口0脚中断源
    extijiegouti.EXTI_Line = EXTI_Line0;//0号外部中断线
    extijiegouti.EXTI_Mode = EXTI_Mode_Interrupt;//外部中断模式
    extijiegouti.EXTI_Trigger = EXTI_Trigger_Rising;//上升中断
    extijiegouti.EXTI_LineCmd = ENABLE;//外部中断线开通
    EXTI_Init(&extijiegouti);//设置中断寄存器

    //中断控制器配置
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//第一组优先级
    nvicjiegouti.NVIC_IRQChannel = EXTI0_IRQn;//中断通道
    nvicjiegouti.NVIC_IRQChannelPreemptionPriority = 1;//配置抢先优先级
    nvicjiegouti.NVIC_IRQChannelSubPriority = 1;//配置子优先级
    nvicjiegouti.NVIC_IRQChannelCmd = ENABLE;//打开通道
    NVIC_Init(&nvicjiegouti); //设置中断控制器

        while(1) //这个不要漏掉                        
        {
        }
}
回复

使用道具 举报

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

本版积分规则

野火电子公众号

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

GMT+8, 2020-1-29 07:15 , Processed in 0.123282 second(s), 28 queries , Gzip On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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