打印
[技术问答]

mini51链接JLINK下载一次就锁死,不能再次链接JLINK了

[复制链接]
1601|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 apple163 于 2016-6-25 10:06 编辑

如题,
是我的代码配置有问题?
那么这种情况怎么修复呢?不能因为用户代码有错误就终身锁死了吧?

我焊接了外部时钟,还是无法链接,我的代码确实是操作错了时钟源,但是难道这样就是死刑?



void SYS_Init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init System Clock                                                                                       */
/*---------------------------------------------------------------------------------------------------------*/
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Enable IRC22M clock */
    CLK->PWRCON &= ~CLK_PWRCON_IRC22M_EN_Msk;
    CLK->PWRCON |=  CLK_PWRCON_IRC22M_EN_Msk;
   
    /* Waiting for IRC22M clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);

    /* Switch HCLK clock source to XTAL */
    CLK->CLKSEL0 &= ~CLK_CLKSEL0_HCLK_S_Msk;
    CLK->CLKSEL0 |=  CLK_CLKSEL0_HCLK_S_Msk;

    /* Enable IP clock */        
    CLK->APBCLK |= CLK_APBCLK_UART_EN_Msk;                 // UART Clock Enable
   
    /* Select IP clock source */
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
    CLK->CLKSEL1 |=  CLK_CLKSEL1_UART_S_Msk;        // Clock source from external 12 MHz or 32 KHz crystal clock
                     
    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
    SystemCoreClockUpdate();
               
/*---------------------------------------------------------------------------------------------------------*/
/* Init I/O Multi-function                                                                                 */
/*---------------------------------------------------------------------------------------------------------*/
    /* Set P1 multi-function pins for UART1 RXD and TXD  */
    SYS->P1_MFP &= ~(SYS_MFP_P12_Msk | SYS_MFP_P13_Msk);
    SYS->P1_MFP |=  (SYS_MFP_P12_RXD | SYS_MFP_P13_TXD);

    /* Lock protected registers */
    SYS_LockReg();

}
沙发
apple163|  楼主 | 2016-6-25 10:26 | 只看该作者
第三个报废了


   SYS_UnlockReg();

    /* Enable IRC22M clock */
    CLK->PWRCON &= ~CLK_PWRCON_IRC22M_EN_Msk;
    CLK->PWRCON |=  CLK_PWRCON_IRC22M_EN_Msk;
   
    /* Waiting for IRC22M clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);

    /* Switch HCLK clock source to  */
    CLK->CLKSEL0 &= ~CLK_CLKSEL0_STCLK_S_Msk;
    CLK->CLKSEL0 |=  CLK_CLKSEL0_STCLK_S_Msk;

    /* Enable IP clock */        
    CLK->APBCLK |= CLK_APBCLK_UART_EN_Msk;                 // UART Clock Enable
   
    /* Select IP clock source */
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
    CLK->CLKSEL1 |=  CLK_CLKSEL1_UART_S_Msk;        // Clock source from external 12 MHz or 32 KHz crystal clock
                     
    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
    SystemCoreClockUpdate();

使用特权

评论回复
板凳
apple163|  楼主 | 2016-6-25 11:08 | 只看该作者
使用NU LINK 就可以下载了,对JLINK支持不好

正确配置如下

    SYS_UnlockReg();

    /* Enable IRC22M clock */
    CLK->PWRCON |=  CLK_PWRCON_IRC22M_EN_Msk;
   
    /* Waiting for IRC22M clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);

    /* Switch HCLK clock source to  */
    CLK->CLKSEL0 &= ~CLK_CLKSEL0_STCLK_S_Msk;
    CLK->CLKSEL0 |=  CLK_CLKSEL0_STCLK_S_Msk;

    /* Enable IP clock */        
    CLK->APBCLK |= CLK_APBCLK_UART_EN_Msk;                 // UART Clock Enable
   
    /* Select IP clock source */
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
    CLK->CLKSEL1 |=  CLK_CLKSEL1_UART_S_Msk;        // Clock source from external 12 MHz or 32 KHz crystal clock
                     
    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
    SystemCoreClockUpdate();

使用特权

评论回复
地板
quray1985| | 2016-6-25 21:55 | 只看该作者
编写程序还和下载器有关系?

使用特权

评论回复
5
戈卫东| | 2016-6-26 05:42 | 只看该作者
/* Switch HCLK clock source to  */
    CLK->CLKSEL0 &= ~CLK_CLKSEL0_STCLK_S_Msk;
    CLK->CLKSEL0 |=  CLK_CLKSEL0_STCLK_S_Msk;
这些敏感的寄存器要避免写成这样的两步形式,除非那个寄存器必须要求两步。
    CLK->CLKSEL0 =    ( CLK->CLKSEL0 & ~CLK_CLKSEL0_STCLK_S_Msk ) | CLK_CLKSEL0_STCLK_S_Msk;

使用特权

评论回复
6
稳稳の幸福| | 2016-6-27 14:39 | 只看该作者
从来没有用过JLink,做STM32用ST-Link,做新唐,nu-LInk.

使用特权

评论回复
7
dongnanxibei| | 2016-6-28 15:50 | 只看该作者
可能这个芯片对JLink兼容性不好,不如弄个他们自己家的Link,一般都是谁家的设备,用谁家的编译器效果最好

使用特权

评论回复
8
dongnanxibei| | 2016-6-29 00:00 | 只看该作者
有些锁死就是终身的,为了保护里面的程序。
就和以前的烧断熔丝是一样的。

使用特权

评论回复
9
643757107| | 2016-6-29 12:50 | 只看该作者
竟然都报废了,还一直在用,是不是编程器有问题。

使用特权

评论回复
10
zhuomuniao110| | 2016-6-29 20:31 | 只看该作者
这玩意儿是不是哪儿设置的每次烧录后就锁死系统了。

使用特权

评论回复
11
dongnanxibei| | 2016-6-29 21:15 | 只看该作者
代码用官方的例程烧试试,如果还锁死,那就是你Jlink有问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

60

帖子

1

粉丝