MBED移植日記:exti_api(基於STM32F107RC,適用於C)

mbed官方庫並未提供exti_api模塊,此乃本人在項目中根據實際需要創建的,用着也還順手。

內容比較簡單,直接把源代碼奉上。

該模塊會用到gpio_api中的接口函數。

一、exti_api.h

/**
  ******************************************************************************
  * File Name          : exti_api.h
  * Description        : 
  ******************************************************************************
  */


#ifndef  EXTI_API_H
#define  EXTI_API_H


void exti_irq_init(uint32_t pin,uint32_t mode);
void exti_irq_set(uint32_t pin,uint32_t preempt_prio,uint32_t sub_prio);
void exti_irq_enable(uint32_t pin);
void exti_irq_disable(uint32_t pin);


#endif

二、exti_api.c

/**
  ******************************************************************************
  * File Name          : gpio_api.c
  * Description        : 
  ******************************************************************************
  */

#include "iassert.h"
#include "ierror.h"

#include "stm32f1xx.h"

#include "exti_api.h"
#include "gpio_api.h"



/**
  * biref    initialize gpio exti 
  * pin      - external IT gpio pin
  * mode     external IT or even trigger detection
  *          - GPIO_MODE_IT_RISING
  *          - GPIO_MODE_IT_FALLING
  *          - GPIO_MODE_IT_RISING_FALLING
  */
void exti_irq_init(uint32_t pin,uint32_t mode)
{
    gpio_init(pin);
    gpio_format(pin,mode,GPIO_NOPULL);
    exti_irq_set(pin,0,0);
}


/*
 * 描述:配置外部中斷,可使用的優先級數由優先級配置寄存器決定,爲了節省功耗cortex-cm3一般只使用了8位中的高4位,即16個優先級
 * pin :引腳
 * preempt_prio :搶佔優先級,由優先級組設置決定
 * sub_prio:子優先級,
 */
void exti_irq_set(uint32_t pin,uint32_t preempt_prio,uint32_t sub_prio)
{
    IRQn_Type       irq;
    uint32_t        gpio_pin = (uint32_t)1<


三、應用舉例


實例:紅外遙控接收引腳配置


#include "exti_api.h"


#define  IR_PIN PC_10


void main(void)

{

/* 設置爲上升下降沿中斷 */

exti_irq_init(IR_PIN,GPIO_MODE_IT_RISING_FALLING);

/* 設置優先級 */

 exti_irq_set(IR_PIN,0,0);

while(1);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章