注册 登录
查看: 1279|回复: 16

下载了LCD_摄像头程序并调试时,程序卡在FIRE_SCCB.c卡死出不来!

[复制链接]
发表于 2014-5-17 18:48:27 | 显示全部楼层 |阅读模式
一开始卡死在Mk60—dwt处
void dwt_delay_us(uint32 us)
{
    uint32 st,et,ts;
    DEMCR            |=  DEM_CR_TRCENA_MASK;        //使能 调试时钟 (默认已经打开)
    DWT_CTRL         |=  DWT_CTRL_CYCCNTENA;

    st = DWT_CYCCNT;
    ts =  us * (DWT_CLK_HHZ /(1000));
    et = st + ts;
    if(et < st)
    {
        //溢出,需要转动一周
        while(DWT_CYCCNT > et);      //等待 DWT_CYCCNT 溢出 返回0
    }

    while(DWT_CYCCNT < et);      //等待 DWT_CYCCNT 到底计数值
}

程序一直在  //等待 DWT_CYCCNT 到底计数值      中跳不出来
   
后来看论坛上的帖子,把flash勾取消掉了,继续下载调试,但现在去卡在FIRE_SCCB.c中

static void SCCB_delay(uint16 i);

/*!
*  @brief      SCCB延迟函数
*  @param      time    延时时间
*  @since      v5.0
*/
static void SCCB_delay(volatile uint16 time)
{
    while(time)
    {
        time--;
    }
}


在while(time)这里卡死出不来,怎么回事啊?
回复

使用道具 举报

发表于 2015-12-18 18:08:46 | 显示全部楼层
2393685144 发表于 2015-12-18 15:37
停在
//等待发送缓冲区空
        while(!(UART0_S1 & UART0_S1_TDRE_MASK));

这个地方不看卡死的。你看看串口发送什么信息出来
回复 支持 1 反对 0

使用道具 举报

发表于 2014-5-17 18:50:05 | 显示全部楼层
串口看实验结果,看看是不是sccb错误
回复 支持 反对

使用道具 举报

发表于 2014-5-17 19:18:29 | 显示全部楼层
你LCD的型号和代码设定的是一样的吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-17 19:57:48 | 显示全部楼层
丌官娅硕 发表于 2014-5-17 18:50
串口看实验结果,看看是不是sccb错误

串口收不到数据,看不了实验结果!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-17 19:58:32 | 显示全部楼层
qq610061 发表于 2014-5-17 19:18
你LCD的型号和代码设定的是一样的吗

没有用连接lcd,这个有影响吗?
回复 支持 反对

使用道具 举报

发表于 2014-5-17 20:00:20 | 显示全部楼层
335813441 发表于 2014-5-17 19:57
串口收不到数据,看不了实验结果!

在线调试,把调用栈 截图上来给我们看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 16:00:18 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-17 20:00
在线调试,把调用栈 截图上来给我们看看。

程序执行到这里的时候一直出不来,高速执行的时候time显示error

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2014-5-18 16:14:59 | 显示全部楼层
335813441 发表于 2014-5-18 16:00
程序执行到这里的时候一直出不来,高速执行的时候time显示error

有没有接入摄像头?接线是否正确?
如果接入了山外鹰眼,那鹰眼 拔掉其他线,然后 万用表打到 测通路那个档
红色表笔 接地 (上螺丝的那个地方就是地),黑色表笔接 SCL和SDA
看看读到值是多少
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 16:59:27 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-18 16:14
有没有接入摄像头?接线是否正确?
如果接入了山外鹰眼,那鹰眼 拔掉其他线,然后 万用表打到 测通路那个 ...

都是510左右,scl和sda需要接吗?这个程序不是用的dma驱动的吗,还需接啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 18:55:40 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-18 16:14
有没有接入摄像头?接线是否正确?
如果接入了山外鹰眼,那鹰眼 拔掉其他线,然后 万用表打到 测通路那个 ...

上面的解决了,后来程序卡在while( !(SYST_CSR & SysTick_CSR_COUNTFLAG_MASK));   //等待时间到   这里了?有什么好的解决办法啊?
回复 支持 反对

使用道具 举报

发表于 2014-5-18 18:56:36 | 显示全部楼层
335813441 发表于 2014-5-18 18:55
上面的解决了,后来程序卡在while( !(SYST_CSR & SysTick_CSR_COUNTFLAG_MASK));   //等待时间到   这里了 ...

试试用 pit定时器
  1. /*
  2. * 配置延时函数
  3. */
  4. #if 0                             //这里1改成0,即可取消默认延时为DWT
  5. #include "MK60_DWT.h"            
  6. #define DELAY()         dwt_delay_ms(500)
  7. #define DELAY_MS(ms)    dwt_delay_ms(ms)
  8. #define DELAY_US(us)    dwt_delay_us(us)
  9. #elif   0
  10. #include "MK60_lptmr.h"
  11. #define     DELAY()         lptmr_delay_ms(500)
  12. #define     DELAY_MS(ms)    lptmr_delay_ms(ms)
  13. #define     DELAY_US(us)    lptmr_delay_us(us)
  14. #elif   1 //这里0改成1,即使用 pit 定时器
  15. #include "MK60_pit.h"
  16. #define DELAY()         pit_delay_ms(PIT3,500)
  17. #define DELAY_MS(ms)    pit_delay_ms(PIT3,ms)
  18. #define DELAY_US(us)    pit_delay_us(PIT3,us)
  19. #else
  20. #include "MK60_SysTick.h"
  21. #define DELAY()         systick_delay_ms(500)
  22. #define DELAY_MS(ms)    systick_delay_ms(ms)
  23. #define DELAY_US(us)    systick_delay_us(us)
  24. #endif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-18 19:16:56 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-18 18:56
试试用 pit定时器

这都改了,但是改完之后停在
void uart_putchar (UARTn_e uratn, char ch)
{
    //等待发送缓冲区空
    while(!(UART_S1_REG(UARTN[uratn]) & UART_S1_TDRE_MASK));

    //发送数据
    UART_D_REG(UARTN[uratn]) = (uint8)ch;
}
中的
while(!(UART_S1_REG(UARTN[uratn]) & UART_S1_TDRE_MASK));这里了!
串口也收不到数据
回复 支持 反对

使用道具 举报

发表于 2014-5-18 19:18:51 | 显示全部楼层
335813441 发表于 2014-5-18 19:16
这都改了,但是改完之后停在
void uart_putchar (UARTn_e uratn, char ch)
{

感觉不是停止那里,而是反复进入这个函数吧。

降低一下系统频率先,然后再截图一下调用栈!
调用栈包含调用关系,其他人才容易了解你的情况。
回复 支持 反对

使用道具 举报

发表于 2015-2-16 10:26:26 | 显示全部楼层
335813441 发表于 2014-5-18 18:55
上面的解决了,后来程序卡在while( !(SYST_CSR & SysTick_CSR_COUNTFLAG_MASK));   //等待时间到   这里 ...

来挖坟了。。。。上面的问题怎么解决的
回复 支持 反对

使用道具 举报

发表于 2015-3-10 18:39:54 | 显示全部楼层
我之前出现了这个问题,后来发现是自己的主控板开关没有开,应该就是摄像头没有供电,不知道是不是这种情况。
回复 支持 反对

使用道具 举报

发表于 2015-12-18 15:37:47 | 显示全部楼层
停在
//等待发送缓冲区空
        while(!(UART0_S1 & UART0_S1_TDRE_MASK));
这里该怎么解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部