登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

设断点可以运行,而全速不行?

作者:erlking 栏目:ARM技术
设断点可以运行,而全速不行?
ads1.2下调试LPC2132的串口U0,让串口中断程序自动发送缓存中的下一个字节,我在串口程序里设置一个断点,调试时按“run”键可以进中断一个字节一个字节的往外发,但是去掉断点全速运行的时候就只发一个字节,然后再也不发了,何故?
图片如下:

* - 本贴最后修改时间:2006-9-14 10:40:29 修改者:erlking

2楼: >>参与讨论
erlking
没人遇到过吗?我贴源代码

/****************************************************************************
* 名称:UART0_Init()
* 功能:初始化串口0。
****************************************************************************/
void  UART0_Init(uint32 baud)
{
    uint32 Fdiv;

    PINSEL0 |= 0x00000005;    // 设置I/O连接到UART0
    U0LCR = 0x83;        // DLAB = 1,可设置波特率
    Fdiv = (Fpclk / 16) / baud;  // 设置波特率
    U0DLM = Fdiv / 256;                            
    U0DLL = Fdiv % 256;                        
    U0LCR = 0x03;    //设置为8位数据位,1位停止位,无奇偶校验
    U0FCR = 0x01;    //使用FIFO,1字节触发中断
    U0IER = 0x03;    //使能U0中断,接收数据可用,发送缓冲空
}

/*********************************************************************************************************
** 函数名称: UART0_Exception
** 功能描述: 定时器0中断服务程序
********************************************************************************************************/
void UART0_Exception(void)
{
    uint32 i;
    i = U0IIR;    //读中断标志,并清除发送中断标志
    i = U0LSR;    //读线状态
    if(i&BIT0)    //有接收数据
    {
        r0_buf[r0_buf_wptr++] = U0RBR;
        //往缓存里添加一字节
    }
    else if(i&BIT6)    //发送器空
    {
        U0THR = t0_buf[t0_buf_rptr++];
    }
    VICVectAddr = 0;    //更新硬件优先级
}


3楼: >>参与讨论
erlking
也许没说清楚,再描述一遍

在U0的发送中断服务程序里,自动将缓存里未发送的数据送往发送fifo,可是中断一次之后就再也进不了中断了,我在中断里设置一个断点然后运行,就能进中断,再次运行,又能进中断,在有断点的情况下,只要不断点击debug中的运行键就能让缓存里所有的数据全部发出,但是去掉断点全速运行却不行,这是怎么回事啊?

4楼: >>参与讨论
brm00
.
会不会是发送间隔的速度太快了,在发送字符间加一些延时试试。

还有一点串口设中断时有时断点的设置位置不同也会影响程序的运行。还请大家拍砖。

5楼: >>参与讨论
lpc2000
调试的时候,加些错误处理
调试的时候,加些错误处理。

如果线中断有错的话,比如 LSR_OE,LSR_PE,LSR_FE,LSR_RXFE,
LSR_BI,读一下RBR,

否则你就读不到下一个了。



6楼: >>参与讨论
erlking
LSR内容为0x60
PC端接收到这个字符后,没有进中断,这时查看LSR的内容为0x60,也就是说只有发送保持寄存器空、fifo空两个标志为1

参与讨论
昵称:
讨论内容:
 
 
相关帖子
LPC214X支持中断嵌套么?
ARM的频率为60Mhz,运行怎么这么慢?
Keil RV之C++头文件变化了,C++文件不重新编译? 晕... 谢了
RAM中调试不能设置断点?
堆栈初始化疑问
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号