Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32G031J6 помогите откачать-)

Пн янв 04, 2021 18:08:43

Всем привет!
Пытаюсь изучать контроллер. У него нога сброса совмещена с портами. Хотел, поставить ее в режим сброса по умолчанию. Для этого из примеров от Куба взял код, ниже, запустил его, после перезагрузки контроллер перестал видеться СТ-линком. При подключении СТ-линка к компу появляется файл FAIL.TXT с описанием ошибки The interface firmware FAILED to reset/halt the target MCU
Для опытов использую плату STM32G0316-DISCO
Пробовал подключаться по УСАРТУ, boot0 через резистор 10к подтягивал к плюсу, но видимо что-то не так делаю, не получается. Может усарт не туда подключаю.
Уже 2 контроллера в таком состоянии-)

Код:
/**
  * @brief  Set demo sub-mode
  * @param  SubMode select one of 2 different demo modes.
  *         This parameter can be one of the following values:
  *           @arg @ref SUBDEMO_MODE_GPIO
  *           @arg @ref SUBDEMO_MODE_NRST
  *         Target will reboot with option byte reset reason
  * @retval None
  */
static void SetDemoMode(DemoMode_t DemoMode)
{
  uint32_t nrstmode;

  /* Enable Flash access anyway */
  __HAL_RCC_FLASH_CLK_ENABLE();

  /* Unlock flash */
  FLASH->KEYR = FLASH_KEY1;
  FLASH->KEYR = FLASH_KEY2;
  while((FLASH->CR & FLASH_CR_LOCK) != 0x00);

  /* unlock option byte registers */
  FLASH->OPTKEYR = 0x08192A3B;
  FLASH->OPTKEYR = 0x4C5D6E7F;
  while((FLASH->CR & FLASH_CR_OPTLOCK) == FLASH_CR_OPTLOCK);

  /* get current user option bytes */
  nrstmode = (FLASH->OPTR & ~FLASH_OPTR_NRST_MODE);
  /* Select sub demo mode */
  if(DemoMode == DEMO_MODE_GPIO)
  {
    nrstmode |= OB_RESET_MODE_GPIO;
  }
  else
  {
    nrstmode |= OB_RESET_MODE_INPUT_OUTPUT;
  }

  /* Program option bytes */
  FLASH->OPTR = nrstmode;

  /* Write operation */
  FLASH->CR |= FLASH_CR_OPTSTRT;
  while((FLASH->SR & FLASH_SR_BSY1) != 0);

  /* Force OB Load */
  FLASH->CR |= FLASH_CR_OBL_LAUNCH;

  //while(1);
}
Вложения
Screenshot_14.jpg
(56.11 KiB) Скачиваний: 110
Ответить