调试运行时间偏长

[复制链接]
1042|23
 楼主| houcs 发表于 2020-3-1 10:00 | 显示全部楼层 |阅读模式
KIT3调试运行时间偏长
以5s延时为例,调试运行需要大概15s时间,烧录运行只需1.5s左右,
也就是说运行的指令时间有问题
llia 发表于 2020-3-1 10:06 | 显示全部楼层
 楼主| houcs 发表于 2020-3-1 10:08 | 显示全部楼层

#include<xc.h>
// CONFIG1
#pragma config FOSC = XT        // Oscillator Selection (XT Oscillator, Crystal/resonator connected between OSC1 and OSC2 pins)
#pragma config WDTE = SWDTEN     // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE =  ON         // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN =   OFF      // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config VCAPEN = OFF     // Voltage Regulator Capacitor Enable bit (Vcap functionality is disabled on RA6.)
#pragma config PLLEN = ON       // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LPBOR = OFF      // Low Power Brown-Out Reset Enable Bit (Low power brown-out is disabled)
#pragma config LVP =  OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)

void delayms(unsigned int x)    //延时 x ms
{
    unsigned int i,j;
    for(i=x;i>0;i--)
        for(j=110;j>0;j--);
}

void main()
{
        TRISD=0x00;
while(1)
{
         LATD=0X00;
        delayms(5000);
        LATD=0XFF;
        delayms(5000);
}
}
wenfen 发表于 2020-3-1 10:11 | 显示全部楼层
先不要怀疑KIT3,通常都是代码中有鬼
wangpe 发表于 2020-3-1 10:14 | 显示全部楼层
应该是配置字的问题
 楼主| houcs 发表于 2020-3-1 10:18 | 显示全部楼层
我认为是配置字的问题,器件我也更换了,结果相同
zhanglli 发表于 2020-3-1 10:21 | 显示全部楼层
你这种delay时间很难精准的,不过Debug和Release为什么会差别这么大,确实很奇怪,
yinxiangh 发表于 2020-3-1 10:23 | 显示全部楼层
你可以考虑用Timer做delay
ousj 发表于 2020-3-1 10:29 | 显示全部楼层
你的watchdog enable了,但是没有看到喂狗。所以我怀疑贴出的代码段,应该是截取出来的代码。
xxmmi 发表于 2020-3-1 10:36 | 显示全部楼层
你代码中有中断吗,中断会影响你的通过指令来delay的时长。
llia 发表于 2020-3-1 10:51 | 显示全部楼层
你的程序Release模式有没有使用优化,如果有的话,可以试试关掉优化,重新编译烧写,再看效果如何
 楼主| houcs 发表于 2020-3-1 11:03 | 显示全部楼层
看门狗配置位设置为01(即SWDTEN模式),这是看门狗使能由WDTCONbits.SWDTEN控制。
huwr 发表于 2020-3-1 11:09 | 显示全部楼层
打开了吗
 楼主| houcs 发表于 2020-3-1 11:13 | 显示全部楼层
本程序阶段我并未打开此位(并暂停查看过次位为0,即为禁止)
wangpe 发表于 2020-3-1 11:16 | 显示全部楼层
用定时器timer0做过延时吗
 楼主| houcs 发表于 2020-3-1 11:19 | 显示全部楼层
嗯,同样的情况,也就是不是延时函数的问题,而是程序运行指令的时间并不是4M晶振下1us的时间,这是我不懂的!!!
wangzsa 发表于 2020-3-1 11:24 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
happy_10 发表于 2020-3-1 11:25 | 显示全部楼层
有没有现成的驱动安装,支持PRO-06的呢?
wangpe 发表于 2020-3-1 11:30 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wangzsa 发表于 2020-3-1 11:34 | 显示全部楼层
晶振4M, 但是4xPLL 后Fsys就是16M了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部