在写程序的时候遇到的问题,然后专门写了两段测试代码:
1. 代码一:
#include <p32xxxx.h>
#include "timedelay.h"
//FOSC = 12.000MHz
#pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_5, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2
void main(void)
{
_TRISB0 = 0; //将B0 设置成输出
_TRISB1 = 0; //将B0 设置成输出
while(1)
{
_RB0 = 0;
_RB1 = 0;
delayMs(10); //延时10ms
_RB0 = 1;
_RB1 = 1;
delayMs(10); //延时10ms
}
}
用示波器测量,B0对应的单片机引脚:有矩形波输出,B1对应的单片机引脚:没有跟B0一致的矩形波输出(偶尔输出一个10us不到的高电平)。
2. 代码二:
#include <p32xxxx.h>
#include "timedelay.h"
//FOSC = 12.000MHz
#pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_5, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2
void main(void)
{
TRISB = 0; //将PORTB都设置为输出
while(1)
{
PORTB = 0x00;
delayMs(10); //延时10ms
PORTB = 0xFF;
delayMs(10); //延时10ms
}
}
用示波器测量,B0、B1对应的单片机引脚:有一致的矩形波输出。
被这个问题搞得头都大了,盼高手指点一下。小弟在此先谢过啦!
(开发工具:MPLAB 8.50+ICD3,单片机:PIC32MX460F256L,外部晶振:12MHz)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
LATB=0x0000;
-----------------------------------------------------------------------
先谢谢piccode, 我下午调试了一下,很可惜,B0、B1输出还是不一致。下面是数字示波器的采集结果
示波器探头接到B0脚测得波形图 (原文件名:示波器采集_B0输出.JPG)
示波器探头接到B1脚测得波形图 (原文件名:示波器采集_B1输出.JPG)
-----------------------------------------------------------------------
谢谢headwolf_83, 以下是按headwolf_83提供的思路的写的代码,B0、B1输出的波形终于一致了!谢谢
#include <p32xxxx.h>
#include <plib.h>
#include "TimeDelay.h"
//FOSC = 12.000MHz
#pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_5, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2
int main(void)
{
PORTSetPinsDigitalOut(IOPORT_B, BIT_0 | BIT_1);
while(1)
{
PORTClearBits(IOPORT_B, BIT_0 | BIT_1);
delayMs(10); //延时10ms
PORTSetBits(IOPORT_B, BIT_0 | BIT_1);
delayMs(10); //延时10ms
}
}
一周热门 更多>