<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ST-LINK fails to be detected!</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/32631/st-link-fails-to-be-detected</link><description> 
Hi 
I have been working with ST-Link V2 programmer to program STM32L1
discovery board. 
after a month or so yesterday I faces a problem I get error when
trying to download the flash: 
&amp;quot;Flash download failed-Target dll has been canceled&amp;quot; 
in tools in</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: ST-LINK fails to be detected!</title><link>https://community.arm.com/thread/133926?ContentTypeID=1</link><pubDate>Mon, 15 Jun 2015 10:43:28 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:6cc021a6-0b3e-43e5-bf68-a91c96b42c77</guid><dc:creator>hamed ad</dc:creator><description>&lt;p&gt;&lt;p&gt;
Thank you very much for your help!&lt;br /&gt;
I did what you said and the problem solved. Many many thanks.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ST-LINK fails to be detected!</title><link>https://community.arm.com/thread/120594?ContentTypeID=1</link><pubDate>Mon, 15 Jun 2015 09:08:32 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:c37d6c3a-7249-45d2-ae14-50e68846c755</guid><dc:creator>Westonsupermare Pier</dc:creator><description>&lt;p&gt;&lt;p&gt;
You can link/jumper the BOOT(BOOT0) pin and VDD (3V), and restart
the board, in this state it won&amp;#39;t be running any of your code, and
you should be able to erase it.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ST-LINK fails to be detected!</title><link>https://community.arm.com/thread/108278?ContentTypeID=1</link><pubDate>Mon, 15 Jun 2015 08:29:18 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:8c5a65c2-2f45-41d3-b095-24eb6d1dcabf</guid><dc:creator>hamed ad</dc:creator><description>&lt;p&gt;&lt;p&gt;
Dear Westonsupermare,&lt;br /&gt;
I did not use any of PA13 and PA14 pins.&lt;br /&gt;
I had another STM32L discovery board of same type I programmed it
with another firmware and saw that it is no longer able to be
programmed. how ever they work properly by their last firmware now.
the ST-LINK programmer is okay since I can program Discovery board
for STM32f103RE.&lt;br /&gt;
Is there any way to make my faulty boards back to their early
state?&lt;br /&gt;
I remember in AVR I had same problem when fusebits set by fault so I
need to give an external clock!&lt;br /&gt;
But I don&amp;#39;t know is there some way like that?&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ST-LINK fails to be detected!</title><link>https://community.arm.com/thread/93448?ContentTypeID=1</link><pubDate>Mon, 15 Jun 2015 03:48:26 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:8356f222-ad4c-4feb-a827-4a03514504ce</guid><dc:creator>Westonsupermare Pier</dc:creator><description>&lt;p&gt;&lt;p&gt;
W atch that you didn&amp;#39;t break the PA13/PA14 pins in a prior
iteration, or somewhere else in the code. This would disconnect the
debug interface.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ST-LINK fails to be detected!</title><link>https://community.arm.com/thread/63828?ContentTypeID=1</link><pubDate>Mon, 15 Jun 2015 03:08:19 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:99be1284-d2cd-4490-82b0-c1cd43ae1d44</guid><dc:creator>hamed ad</dc:creator><description>&lt;p&gt;&lt;p&gt;
What I myself think about the mentioned problem is that the last
program I downloaded to flash has made such a problem, is it possible
or it cannot related to the program written? I added the part
below:&lt;/p&gt;

&lt;pre&gt;
#define    DP_0      GPIO_Pin_13  //PC13
#define    DP_1      GPIO_Pin_14  //PC14
#define    DP_2      GPIO_Pin_15  //PC15
#define    DP_3      GPIO_Pin_0   //PC0
#define    DP_4      GPIO_Pin_1   //PC1
#define    DP_5      GPIO_Pin_2   //PC2
#define    DP_6      GPIO_Pin_3   //PC3
#define    DP_7      GPIO_Pin_2   //PB2
//lcd control port
#define    CS1          GPIO_Pin_10   //PB10
#define    CS2          GPIO_Pin_11   //PB11
#define    CS3          GPIO_Pin_12   //PB12
#define    RS           GPIO_Pin_13   //PB13
#define    RW           GPIO_Pin_14   //PB14
#define    EN           GPIO_Pin_15   //PB15
&lt;/pre&gt;
&lt;pre&gt;
&lt;br /&gt;
//-------------------------------------------------------------------------------------------------&lt;br /&gt;
// Universal KS0108 driver library&lt;br /&gt;
// STM32 MCU low-level driver&lt;br /&gt;
// (c) Rados&amp;sup3;aw Kwiecie&amp;ntilde;, radek@dxp.pl&lt;br /&gt;
//-------------------------------------------------------------------------------------------------&lt;br /&gt;
//#include &amp;quot;stm32f10x_lib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;stm32l1xx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd_pin_function.h&amp;quot;

#define KS0108_PORT  GPIOA

#define KS0108_RS    GPIO_Pin_4&lt;br /&gt;
#define KS0108_RW    GPIO_Pin_5&lt;br /&gt;
#define KS0108_EN    GPIO_Pin_6

#define KS0108_CS1   GPIO_Pin_2&lt;br /&gt;
#define KS0108_CS2   GPIO_Pin_3&lt;br /&gt;
#define KS0108_CS3   GPIO_Pin_7

#define KS0108_D0    0

#define DISPLAY_STATUS_BUSY     0x80

extern unsigned char screen_x;&lt;br /&gt;
extern unsigned char screen_y;

GPIO_InitTypeDef GPIO_InitStructure;

void Set_Dataport(unsigned char Data) //this function converts a hex data PD to a data ready to be written in
        //PC13,PC14,PC15,PC0,PC1,PC2,PC3,PB2 , LCD data port&lt;br /&gt;
{
        GPIO_StructInit(&amp;amp;GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = DP_0|DP_1|DP_2|DP_3|DP_4|DP_5|DP_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
        GPIO_Init(GPIOC, &amp;amp;GPIO_InitStructure);

        GPIO_StructInit(&amp;amp;GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = DP_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
        GPIO_Init(GPIOB, &amp;amp;GPIO_InitStructure);

        if (Data &amp;amp; 1&amp;lt;&amp;lt;0) GPIO_SetBits(GPIOC, DP_0); else GPIO_ResetBits(GPIOC, DP_0);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;1) GPIO_SetBits(GPIOC, DP_1); else GPIO_ResetBits(GPIOC, DP_1);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;2) GPIO_SetBits(GPIOC, DP_2); else GPIO_ResetBits(GPIOC, DP_2);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;3) GPIO_SetBits(GPIOC, DP_3); else GPIO_ResetBits(GPIOC, DP_3);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;4) GPIO_SetBits(GPIOC, DP_4); else GPIO_ResetBits(GPIOC, DP_4);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;5) GPIO_SetBits(GPIOC, DP_5); else GPIO_ResetBits(GPIOC, DP_5);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;6) GPIO_SetBits(GPIOC, DP_6); else GPIO_ResetBits(GPIOC, DP_6);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;7) GPIO_SetBits(GPIOB, DP_7); else GPIO_ResetBits(GPIOB, DP_7);&lt;br /&gt;
}

void Reset_Dataport(unsigned char Data) //this function converts a hex data PD to a data ready to be written in
        //PC13,PC14,PC15,PC0,PC1,PC2,PC3,PB2 , LCD data port&lt;br /&gt;
{
        GPIO_StructInit(&amp;amp;GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = DP_0|DP_1|DP_2|DP_3|DP_4|DP_5|DP_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
        GPIO_Init(GPIOC, &amp;amp;GPIO_InitStructure);

        GPIO_StructInit(&amp;amp;GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = DP_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
        GPIO_Init(GPIOB, &amp;amp;GPIO_InitStructure);

        if (Data &amp;amp; 1&amp;lt;&amp;lt;0) GPIO_ResetBits(GPIOC, DP_0); //else GPIO_ResetBits(GPIOC, DP_0);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;1) GPIO_ResetBits(GPIOC, DP_1); //else GPIO_ResetBits(GPIOC, DP_1);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;2) GPIO_ResetBits(GPIOC, DP_2); //else GPIO_ResetBits(GPIOC, DP_2);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;3) GPIO_ResetBits(GPIOC, DP_3); //else GPIO_ResetBits(GPIOC, DP_3);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;4) GPIO_ResetBits(GPIOC, DP_4); //else GPIO_ResetBits(GPIOC, DP_4);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;5) GPIO_ResetBits(GPIOC, DP_5); //else GPIO_ResetBits(GPIOC, DP_5);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;6) GPIO_ResetBits(GPIOC, DP_6); //else GPIO_ResetBits(GPIOC, DP_6);
        if (Data &amp;amp; 1&amp;lt;&amp;lt;7) GPIO_ResetBits(GPIOB, DP_7); //else GPIO_ResetBits(GPIOB, DP_7);&lt;br /&gt;
}

//-------------------------------------------------------------------------------------------------&lt;br /&gt;
// Delay function /for 8MHz/&lt;br /&gt;
//-------------------------------------------------------------------------------------------------&lt;br /&gt;
void GLCD_Delay(void)&lt;br /&gt;
{
//  asm(&amp;quot;nop&amp;quot;);asm(&amp;quot;nop&amp;quot;);asm(&amp;quot;nop&amp;quot;);asm(&amp;quot;nop&amp;quot;);
        __nop();__nop();__nop();__nop();&lt;br /&gt;
}
//-------------------------------------------------------------------------------------------------&lt;br /&gt;
// Enalbe Controller (0-2)&lt;br /&gt;
//-------------------------------------------------------------------------------------------------&lt;br /&gt;
void GLCD_EnableController(unsigned char controller)&lt;br /&gt;
{
switch(controller){
        case 0 : RESET_CS1; break;
        case 1 : RESET_CS2; break;
        case 2 : RESET_CS3; break;
        }&lt;br /&gt;
}
//-------------------------------------------------------------------------------------------------&lt;br /&gt;
// Disable Controller (0-2)&lt;br /&gt;
//-------------------------------------------------------------------------------------------------


&lt;/pre&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>