找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1843|回复: 5
打印 上一主题 下一主题
收起左侧

STM32调用中断服务函数,如何利用官方给的库函数进行松手检测?

[复制链接]
跳转到指定楼层
楼主
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:263427 发表于 2019-11-19 20:16

板凳
ID:25310 发表于 2019-11-20 09:35 | 只看该作者
就是个中断小程序吧!
回复

使用道具 举报

地板
ID:25310 发表于 2019-11-20 09:38 | 只看该作者
主程序:

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
#include "bsp_led.h"
#include "bsp_systick.h"
#include "bsp_exti.h"

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

int main(void)
{
        // 来到这里的时候,系统的时钟已经被配置成72M。
        LED_GPIO_Config();
       
        EXIT_Key_Config();
  GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN1);
        while(1)
        {
          LED_G1_TOGGLE1;
                SysTick_Delay_ms(500);
                //Delay( 6000000 );
        }
}


回复

使用道具 举报

5#
ID:25310 发表于 2019-11-20 09:39 | 只看该作者
中断GPIO初始化程序:

#include "bsp_exti.h"

static void EXTI_NVIC_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStruct;
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
       
        NVIC_InitStruct.NVIC_IRQChannel = EXTI2_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);
}

void EXIT_Key_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStruct;
        EXTI_InitTypeDef  EXTI_InitStruct;
       
        // 配置中断优先级
        EXTI_NVIC_Config();
       
        // 初始化GPIO
        RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK, ENABLE);       
        GPIO_InitStruct.GPIO_Pin = KEY1_INT_GPIO_PIN;
        GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IN_FLOATING; //GPIO_Mode_IPU;       
        GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStruct);       
       
        // 初始化EXTI
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
       
        EXTI_InitStruct.EXTI_Line = KEY1_INT_GPIO_PIN;//EXTI_Line2;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStruct);       
}
回复

使用道具 举报

6#
ID:25310 发表于 2019-11-20 09:41 | 只看该作者
中断函数:

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_it.h"
#include "bsp_led.h"
#include "bsp_exti.h"


void EXTI2_IRQHandler (void)
{
        if(EXTI_GetITStatus(EXTI_Line2) != RESET)
        {
                LED_G2_TOGGLE2;
        }
        EXTI_ClearITPendingBit(EXTI_Line2);
}
回复

使用道具 举报

7#
ID:25310 发表于 2019-11-20 09:43 | 只看该作者
程序文件架构

文件架构.jpg (235.85 KB, 下载次数: 15)

文件架构.jpg
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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