码迷,mamicode.com
首页 > 其他好文 > 详细

智能车学习(十六)——K60单片机EXIT外部中断

时间:2015-11-25 11:26:05      阅读:648      评论:0      收藏:0      [点我收藏+]

标签:

一、头文件:

#ifndef _EXTI_H_
#define _EXTI_H_

typedef enum exti_cfg
{
    zero_down     = 0x08u,     //低电平触发,内部下拉
    rising_down   = 0x09u,     //上升沿触发,内部下拉
    falling_down  = 0x0Au,     //下降沿触发,内部下拉
    either_down   = 0x0Bu,     //跳变沿触发,内部下拉
    one_down      = 0x0Cu,     //高电平触发,内部下拉

    //用最高位标志上拉和下拉
    zero_up       = 0x88u,     //低电平触发,内部上拉
    rising_up     = 0x89u,     //上升沿触发,内部上拉
    falling_up    = 0x8Au,     //下降沿触发,内部上拉
    either_up     = 0x8Bu,     //跳变沿触发,内部上拉
    one_up        = 0x8Cu      //高电平触发,内部上拉
} exti_cfg;

//外部中断初始化
void  exti_init(PORTx, u8 n, exti_cfg);


#endif

 

二、源文件

#include "common.h"
#include "gpio.h"
#include "exti.h"



/*************************************************************************
*  函数名称:exti_init
*  功能说明:EXTI外部GPIO中断初始化
*  参数说明:PORTx       端口号(PORTA,PORTB,PORTC,PORTD,PORTE)
*            n           端口引脚
*            exti_cfg    触发选项和上拉下拉选项
*  函数返回:无
*************************************************************************/
void  exti_init(PORTx portx, u8 n, exti_cfg cfg)
{
    SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK << portx);    //开启PORTx端口

    PORT_PCR_REG(PORTX[portx], n) = PORT_PCR_MUX(1) | PORT_PCR_IRQC(cfg & 0x7f ) | PORT_PCR_PE_MASK | ((cfg & 0x80 ) >> 7); // 复用GPIO , 确定触发模式 ,开启上拉或下拉电阻
    GPIO_PDDR_REG(GPIOx[portx]) &= ~(1 << n);       //输入模式
    enable_irq(portx + 87);                         //使能PORT中断,PORTA的ISR中断号为87
}

 

 

三、小结

       这部分的API不能指定中断函数= =,所以暂时搁置不用。

智能车学习(十六)——K60单片机EXIT外部中断

标签:

原文地址:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/4993949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!