标题: STM32调用中断服务函数,如何利用官方给的库函数进行松手检测? [打印本页]

作者: sane    时间: 2019-11-19 09:49
标题: STM32调用中断服务函数,如何利用官方给的库函数进行松手检测?
如题
作者: pcbboy    时间: 2019-11-20 09:35
就是个中断小程序吧!
作者: pcbboy    时间: 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 );
        }
}



作者: pcbboy    时间: 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);       
}
作者: pcbboy    时间: 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);
}
作者: pcbboy    时间: 2019-11-20 09:43
程序文件架构

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

文件架构.jpg





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1