微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540的IO口检测下降沿触发问题?

CC2540的IO口检测下降沿触发问题?

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

大家好:

           我使用CC2540的P0.0和P0.2作为IO口电平检测,只要有下降沿触发就会报警。程序是在simpleBLEperipheral里直接配置寄存器修改的。

           现在的问题是开机一分钟我的一个AD检测定时器一启动或者蓝牙间建立连接后收到蓝牙数据就会触发P0.0的电平变化,个人百思不得齐解,在哪里配置会出现这个问题?  配置函数如下:

void AntiIO_Init(void)
{
    P0SEL &= 0xFA; //通用IO 
    P0DIR &= 0xFA;  //P0_0和P0_2输入
    ANT1 = 0;
    ANT2 = 0;
   
    P0IEN &= 0x00;     //为排除干扰除P0.0和P0.2外其余引脚全部禁止中断使能
    P0IEN |= 0x05;    // P0.0和P0.2 设置为中断方式 1:中断使能
    P0INP &= 0xFA;
    PICTL |= 0x01;    //下降沿触发  0x0上升沿触发       
    IEN1 |= 0x20;    //允许P0口中断;
    P0IFG = 0x00;    //初始化中断标志位
    HAL_ENABLE_INTERRUPTS();
    //EA = 1;          //打开总中断
}

      我AD检测的是 adc = HalAdcRead( HAL_ADC_CHN_VDD3, HAL_ADC_RESOLUTION_12 );   而且我发现只有开机时第一启动这个AD检测定时器会触发电平变化,之后没有影响?请问该怎么办!

另外想问这种检测是直接配置寄存器好还是修改osal里的hal_key.c比较好

我的中断处理函数如下:/****************************************************************************
* 名    称: P0_ISR(void) 中断处理函数
* 描    述: #pragma vector = 中断向量,紧接着是中断处理程序
****************************************************************************/
#pragma vector = P0INT_VECTOR   
__interrupt void P0_ISR(void)
{   
    warninfo.illegal_remove = 1;
    osal_snv_write(0x83, sizeof(warninfo.illegal_remove), &warninfo.illegal_remove);
    Active_Alarm(0); //强拆报警
    osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT2, SBP_PERIODIC_EVT_PERIOD2 );//启动断开计时  
    
    P0IFG = 0;       //清中断标志
    P0IF = 0;        //清中断标志
}

1)先禁用所有的KEY和LED,BEEP宏

2)禁用POWER_SAVING

再看看效果,有问题反馈

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

网站地图

Top