Simpe C代码实际上破坏了核板

时间:2019-05-24 18:47:27

标签: stm32

以下代码从物理上破坏了核板。到目前为止2个。 ST链接无法连接,并且未检测到板。 第一个死者是xncleo stm32f411re,另一个是核子stm32f446re。 我是一个完整的初学者,这几乎是我的第一个代码。 和2个木板都死了;)问题是为什么会发生?还是可以比正常跳线复位更难地复位电路板


int main()
{
    RCC->AHB1ENR = (1<<0);
    GPIOA->MODER = (1<<5);

    while(1)
    {
            GPIOA->ODR |=  (0<<5);
    }
}

这类似于这个问题-> https://electronics.stackexchange.com/questions/204996/stm32-st-link-cannot-connect-to-mcu-after-successful-programming ,可以帮助我恢复主板的答案,但是对于我在此线程中遇到的问题的答案也非常有帮助。

3 个答案:

答案 0 :(得分:0)

好吧,它实际上不会破坏董事会。需要硬重置-缩短核stm32f446re上的rst和sb11引脚。尚未尝试使用xnucleo。

用户P__J__在评论中完全正确。我会引用:

只是不分配给调制解调器。使用| =或&=代替– P__J__

完成。 固定代码:

int main()
{
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;

    GPIOA->MODER |= GPIO_MODER_MODE5_0;

    while(1)
    {
            GPIOA->ODR |=  GPIO_ODR_OD5;
    }

}

答案 1 :(得分:0)

一些用于调试的引脚需要进行一些设置。如果更改这些设置,调试器将无法连接。您需要将调试器设置为在调试引脚处于初始更正状态时在复位状态下连接。 stm32处理器不能以这种简单的方式进行转换。

所以不要听您使用to脚的STM库所需的建议。仅设置您使用的引脚,而不是整个端口。

答案 2 :(得分:0)

是的,您的问题出在“ RCC-> AHB1ENR =(1 << 0);”行中。这样可以为GPIOA供电,但会禁用包括SWD引脚的其他GPIO(F411上的B,C,D,E和H)的电源。