微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541中断

CC2541中断

时间:10-02 整理:3721RD 点击:

我想每次P1.6上升沿中断,读取P1.7脚位的状态,OSAL有没有相应的函数还是,开一个函数,像这样设置:

P0INP|=0x1<<6;

PICTL &=~(0x1<<2);

EA=0x1;

IEN2|=(0x1<<4);

P1IFG |=0;

P1DIR &=~(1<<7);

然后写中断函数

没有直接的函数,可以自己写外部中断的初始化和中断函数.

外部中断的一个完整例子

#include <ioCC2540.h>

#define RLED P1_0

#define led2 P1_1

#define uchar unsigned char

#define uint unsigned int

/*****************************************

//函数声明

*****************************************/

void Delay(uint n);

/*****************************************

//io及LED初始化

*****************************************/

void Init_IO_AND_LED(void)

{

   P1DIR = 0X03; //0为输入(默认),1为输入

   RLED = 1;

   led2 = 1;

   P0INP &= ~0X0c;//有上拉、下拉

   P1INP &= ~0X40; //选择上拉

   P0IEN |= 0X30;   //P04 P05

   PICTL |= 0X02;   //下降沿

   EA = 1;

   IEN1 |= 0X20;   // P0IE = 1;

   P0IFG |= 0x00;   //P12 P13

};

/*****************************************

//主函数

*****************************************/

void main(void)

{

   Init_IO_AND_LED();

   while(1)

   {

   };

}

/*****************************************

//延时

*****************************************/

void Delay(uint n)

{

 uint ii;

 for(ii=0;ii<n;ii++);

 for(ii=0;ii<n;ii++);

 for(ii=0;ii<n;ii++);

 for(ii=0;ii<n;ii++);

 for(ii=0;ii<n;ii++);

}

#pragma vector = P1INT_VECTOR

__interrupt void P1_ISR(void)

{

       if(P0IFG>0)         //按键中断

       {

         P0IFG = 0;

         RLED = !RLED;

       }

       P0IF = 0;          //清中断标志

}

你好 TY,我想知道IO口能不能设置成电平触发中断?如何设置?

吃不消啊,弄个例程也这么混乱,又是P1,又是P0的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top