[MCU] 可能我是唯一一个用代码玩坏开发板子的人。

marklove   2021-10-19 23:10 楼主

话不多说直接先上代码


#include <stdio.h>
#include "wm_hal.h"

void Error_Handler(void);
static void GPIO_Init(void);
static void WDG_Init(void);

WDG_HandleTypeDef hwdg;

int main(void)
{
    SystemClock_Config(CPU_CLK_240M);
    printf("hello worldrn");
    HAL_Init();
    GPIO_Init();
    WDG_Init();
    while (1)
    {
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
        HAL_Delay(300);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2);
        HAL_Delay(500); 
        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2);
        printf(".");
        HAL_Delay(1000);
    }

    return 0;
}

static void WDG_Init(void)
{
    hwdg.Instance = WDG;
    hwdg.Init.Reload = 1 * 1000 * 1000; // 5s
    if (HAL_WDG_Init(&hwdg) != HAL_OK)
    {
        Error_Handler();
    }
}

static void GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIO_CLK_ENABLE();

    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2, GPIO_PIN_SET);

}

void Error_Handler(void)
{
    while (1)
    {
    }
}

void assert_failed(uint8_t *file, uint32_t line)
{
    printf("Wrong parameters value: file %s on line %drn", file, line);
}

按下rest_n 后  三个灯亮一次。 串口的hello 都没打出来就 板子休眠 了。  还有救吗?w806开发版


Waiting for receive CCC ...
Waiting for sync device timeout.
Waiting for restarting device...
Current model: W800
Sync success, w800
BLE  MAC:FFFFFFFFFFFF
WIFI MAC:FFFFFFFFFFFF
Please wait for Erase flash ...
>>>>>>>>>>>>>>>>>>>>Erase flash fail timeout..
Try 115200 baud download file ...
Wait for the chip to be ready ...
 

 

回复评论 (9)

>>>>>Erase flash fail timeout..

Try 2000000 baud download file ...

Wait for the chip to be ready ...

用2000000 也一样。。

点赞  2021-10-19 23:13

在我不懈努力的冲击下 恢复了。 总结就是 让软件工作多个 下载线程, 不停的按rest_n 

点赞  2021-10-19 23:24

 让软件工作多个 下载线程这个可以理解,,

不停的按rest_n 比软件跑的还快?

点赞  2021-10-20 07:21

芯片休眠了确实没法下载程序了,之前我也遇到过,只要想办法让芯片退出休眠就可以了。

点赞  2021-10-20 09:08
你不是第一个,我才是!这种情况,用官方的工具恢复
点赞  2021-10-20 13:12

没看到你代码里那里有休眠啊。

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-10-20 15:51
引用: freebsder 发表于 2021-10-20 15:51 没看到你代码里那里有休眠啊。

这种情况可以配合复位试试,我以前用freescale的KW40时真烧程序弄坏过,而且当时网上类似的情况非常多。无法恢复。

虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2021-10-20 15:54
引用: freebsder 发表于 2021-10-20 15:51 没看到你代码里那里有休眠啊。
  • hwdg.Init.Reload = 1 * 1000 * 1000; //  这个代码 使芯片挂起了?反正有这个板子到时间就不工作了。?就很奇怪。  不是喂狗吗。
点赞  2021-10-20 16:32
引用: annysky2012 发表于 2021-10-20 13:12 你不是第一个,我才是!这种情况,用官方的工具恢复

用什么工具,怎样恢复?

点赞  2021-10-20 16:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复