首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

向高手!PIC32单片机变更模块CN按键中断有关问题

2012-02-12 
向高手求救!PIC32单片机变更模块CN按键中断问题!一下是我的一个小的测试CN按键中断模块的测试代码,问题是

向高手求救!PIC32单片机变更模块CN按键中断问题!
一下是我的一个小的测试CN按键中断模块的测试代码,问题是我在按键前面板的按键时中断没反应,没发生中断,程序不能进入中断处理程序,不知道是不是我的main函数里面的中断初始化有问题,请高手指点。我的按键连接的是 RB2引脚,配置成输入,CN4。
贴上代码,向高手求救:
#pragma config POSCMOD = XT, FNOSC = PRIPLL
#pragma config FPLLIDIV = DIV_2, FPLLMUL = MUL_18, FPLLODIV = DIV_1
#pragma config FPBDIV= DIV_2,FWDTEN = OFF,CP =OFF,BWP =OFF

#include <p32xxxx.h>
#include<plib.h>
#include <stdio.h>


#define delayms(x) \
{ \
int i; \
i = x*10; \
while((--i) != 0); \
}


static int count =0;

void __ISR(_CHANGE_NOTICE_VECTOR, ipl1) CNIntHandler( void )
{
int i =0;
if(!_RB2)
{//延时检测跳变前沿
do
{
delayms(5);
if(!_RB2)
i++;
else
i = 0;
}
while(i < 10);

while(!_RB2);
//延时检测跳变后沿
do
{
delayms(5);
if(_RB2)
i++;
else
i = 0;
}
while(i < 10);
count++;
}
mCNClearIntFlag();
}

int main(void)
{

TRISB = 1;
AD1PCFG = 0xffff;

CNENbits.CNEN4 =1;
CNCONbits.ON =1;
INTEnableSystemSingleVectoredInt();
mCNSetIntPriority( 1);

mCNIntEnable( 1);
while(1);

}
顺便帮我看下我的中断处理程序里面的防止按键抖动的程序这样处理看可以不?

[解决办法]
不了解PIC的具体设置,但是设备成输入模式还能当成中断用吗?至少其它的CPU是不行的,一个管脚的功能,输入、输出、中断、以及其它功能,都是分别使用的,不能同时使用这几样功能,最多是当设置成中断的时候可以直接读取当前的管脚状态,当成输入使用。
[解决办法]
如果硬件上没有去抖功能而在软件上进行去抖,查询方式比中断更好吧。
[解决办法]
帮顶个,楼主加油,慢慢求索。
[解决办法]
PIC32据说是MIPS的核,不过我都不懂
[解决办法]
TRISB = 1;//这样把RB4对应口置成输出了。

另外,中断程序中那么多延时是不合理的。
[解决办法]
在没有完全读完数据手册前请别自己设置积存器。
既然都#include <plib.h>了,就直接用里面的函数来培植就行了。

另外,你的中断向量配置成什么了?很重要

[解决办法]
学习一下。P32没玩过
[解决办法]

探讨

没人愿意帮我解决。。。。

[解决办法]
不能进入中断程序不外乎以下几个问题:中断设置有问题;中断信号有问题;中断有进入了但处理不对,看不到处理结果.LZ自己慢慢排查吧,不要一味指望别人,尤其在别人无法了解你的真正意图的时候,呵呵

热点排行