在使用PIC32MX系列单片机遇到个奇怪的现象

2020-02-09 11:37发布

在写程序的时候遇到的问题,然后专门写了两段测试代码:
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)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
piccode
1楼-- · 2020-02-09 15:27
LATB=0x0002;
LATB=0x0000;
piccode
2楼-- · 2020-02-09 20:00
 精彩回答 2  元偷偷看……
headwolf_83
3楼-- · 2020-02-09 21:41
B口设置为数字口,ADPCFG寄存器设置一下.
jiangyongzeng
4楼-- · 2020-02-09 23:06
回复【2楼】piccode
-----------------------------------------------------------------------
先谢谢piccode, 我下午调试了一下,很可惜,B0、B1输出还是不一致。下面是数字示波器的采集结果

示波器探头接到B0脚测得波形图 (原文件名:示波器采集_B0输出.JPG)


示波器探头接到B1脚测得波形图 (原文件名:示波器采集_B1输出.JPG)
jiangyongzeng
5楼-- · 2020-02-10 03:04
回复【3楼】headwolf_83
-----------------------------------------------------------------------

谢谢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
    }
}
vipcff
6楼-- · 2020-02-10 03:59
问楼主那个片子价格多少 性能怎样

一周热门 更多>