首页 论坛 讨论&求助 stm8s001的swim防锁代码,能详细讲解一下吗?

正在查看 2 帖子:1-2 (共 2 个帖子)
  • 参与人数:2 |  围观次数:3,313 
  • kt
    kt 瓜农

    这段是stm8s001的防锁代码,官方说明里说的是防止swim引脚复用后,无法下载程序

    #define KEY_GPIO_PORT (GPIOC)
    #define KEY_GPIO_PINS (GPIO_PIN_5)
    
    void main(void)
    {
     /* 初始化按键,防锁代码 */
     GPIO_Init(KEY_GPIO_PORT, (GPIO_Pin_TypeDef)KEY_GPIO_PINS, GPIO_MODE_IN_PU_NO_IT);
     if(!GPIO_ReadInputPin(KEY_GPIO_PORT,KEY_GPIO_PINS))
     {
      while(1);
     }
    
     .........
    
    }

    能详细解释一下这段代码防锁的原理是什么吗?

    林光光
    林光光 吃瓜群众

    因为STM8S001这款芯片是没有RST引脚,所以一般是靠上电及掉电两种方法实现硬件复位。下载的防止也只有SWIM方式(SWIM口处于输入模式)。同时可用的IO口,包括SWIM口一共有5个,当将SWIM口复用做其他功能时,同长是配置为其他模式,这是使用SWIM下载是无法识别的,也就是下载不了(锁住)了,官方也有提及到这一问题,并推荐开机使用延迟来解决。

    技新例程中每个例程中主函数的开头都有一段防锁代码,其作用是:配置KEY引脚(IO7)位上拉输入,检测按键是否按下,如按下就会进入while(1)中等待,这是可以下载程序,如果没有按下则恢复KEY引脚的配置为缺省值。同通常使用技新的例程如果发现无法下载程序可以这样做:按下KEY–>断电–>上电–>下载。

     

正在查看 2 帖子:1-2 (共 2 个帖子)

版块 ‘讨论&求助’ 已关闭,不允许发布新话题和回复。