微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 请教CC2540/1检测引脚电平的问题

请教CC2540/1检测引脚电平的问题

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

我想在simpleBLEperipheral例程里加入对P0_0和P0_2两个引脚的电平变化检测功能,问题如下:

1.我是该直接用单片机的寄存器中断检测电平变化啊,还是该在osal里的hal_key.c里修改相应引脚?哪种比较好?

2.假如直接用中断检测.P0_0和P0_2能否共用一个中断函数?

void InitAntiIO(void)
{
    P0DIR &= 0x00;   //P0定义为输入
    P0_0 = 0;             //初始低电平
    P0_2 = 0;            //初始低电平
    P0IEN |= 0x05;    // P0.0和P0.2 设置为中断方式 1:中断使能
    PICTL |= 0x0;    //下降沿触发  0x0上升沿触发       
    IEN1 |= 0x20;    //允许P0口中断;
    P0IFG = 0x00;    //初始化中断标志位
    EA = 1;          //打开总中断
}

 

/****************************************************************************
* 名    称: P0_ISR(void) 中断处理函数
* 描    述: #pragma vector = 中断向量,紧接着是中断处理程序
****************************************************************************/
#pragma vector = P0INT_VECTOR   
__interrupt void P0_ISR(void)
{
    DelayMS(10);     //延时去抖
    LED1 = ~LED1;    //改变LED1状态
    P0IFG = 0;       //清中断标志
    P0IF = 0;        //清中断标志
}

#endif

3. 有没有什么好的例子或方法了?

在peripheral里使用寄存器中断检测的方法好像不行?

我只能在hal_XXX.c里修改吗

 

请问, 你这个问题解决了麽?

就是检测引脚电平问题 

问题解决了,我个人实验的结论是:

在带osal的程序里直接配置寄存器做按键检测的话,可以实现功能,但问题非常多;所以还是在hal_key.cl里仿照它的形式改写是最好的方法。

你是实现hal_key.cl的检测完成,   非常好.

那如果没有按键,  引脚根据外部情况造成高低电平变化, 也能实现吧?  本人目的是想实现统计引脚的高低电平. 

谢谢!

 

当然可以,因为我的项目就没有按键,是一个防拆告警,当该引脚和外部电源被切断后,就会有下降沿触发。但如果你想统计高低电平变化在定义了上升沿或下降沿触发后,是不是只能单向检测一种状态。

非常谢谢你的回答,   检测到一种状态已经能满足了, 因为高低电平变化, 次数基本一致,  大致解决了问题.
既然如此, 你是不是在新增一个文件, 类似hal_key.c 或者直接在hal_key.c中完成呢?  具体实现能否分享下?
本人对蓝牙TI芯片接触才1个多月.  要完成一个功能, 即: 某个引脚高低电平变化多少次后, 完成某项功能.

也想过采用中断方式, 正如你说, 中断方式不妥, 而且, 如果采用一直读取该引脚的方式, 单个功能可以完成,

整个项目却无法解决. :( 

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

网站地图

Top