Перейти к содержанию

Помогите помигать светодиодом


kuzalex2010

Рекомендуемые сообщения

Здравствуйте.

Есть плата на базе stm32f103vdh6. Скажем даже несколько. На одной из них выпаял контроллер и прозвонил кварцы, usb, контакты для st-link и сведотиод. Попробывал в CubeIde просто создать проект с usb соединением. Не вышло. Тогда решил хоть светодиодом мигнуть. И тут беда.

Создаю проект, выбираю модель, подключаю кварцы 8Mhz и 32Khz, RCC-HSE, RCC-LSE.

Пин PE15 висит на светодиоде, обозначаю его как output.

Генерирую код. 

Вставляю 2 строчки кода:

HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);

                HAL_Delay(500);

Делаю Build all и прошиваю.

Светодиод не мигает

В чем причина? Может перед генерацией кода нужно как-то Clock выставить?

Помогите чайнику

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Нужно в КубИДЕ настроить нужный порт как двухтактный выход общего назначения. Или вначале перед главным циклом добавить

1. RCC->APB2ENR = RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPEEN;  // включили тактирование порта Е

2. GPIOE->CRH = (GPIOE->CRH & ~(GPIO_CRH_CNF15 | GPIO_CRH_MODE15)) | GPIO_CRH_MODE15;  // PE15 настроили как General purpose output push-pull, max speed 50 MHz.

Еще возможно он мигает но слишком быстро, попробуйте выполнить пошаговую отладку в основном цикле.

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

cmsis.Куб?.И лучше всего в прерівании по иаймеру.

Хал .Лучше LL.

20.06.2021 в 16:30, kuzalex2010 сказал:

/////////////

Прошиваете через usb?.swio лучше

Изменено пользователем Falconist
Оверквотинг
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

21.06.2021 в 21:41, MasterElectric сказал:

///////////////////

Привет.

Отказался от куба. Написал код в IAR, подключил библиотеки cmsis. Вот код:

#include "stm32f1xx.h"

int ClockInit(void)

{

  __IO int StartUpCounter;

    RCC->CR |= (1<<RCC_CR_HSEON_Pos);

     for(StartUpCounter=0; ; StartUpCounter++)

  {

    if(RCC->CR & (1<<RCC_CR_HSERDY_Pos))

      break;

       if(StartUpCounter > 0x1000)

    {

      RCC->CR &= ~(1<<RCC_CR_HSEON_Pos);

      return 1;

    }

  }

    RCC->CFGR |= (0x07<<RCC_CFGR_PLLMULL_Pos)

            | (0x01<<RCC_CFGR_PLLSRC_Pos);

   RCC->CR |= (1<<RCC_CR_PLLON_Pos);

   for(StartUpCounter=0; ; StartUpCounter++)

  {

   if(RCC->CR & (1<<RCC_CR_PLLRDY_Pos))

      break;

        if(StartUpCounter > 0x1000)

    {

      RCC->CR &= ~(1<<RCC_CR_HSEON_Pos);

      RCC->CR &= ~(1<<RCC_CR_PLLON_Pos);

      return 2;

    }

  }

  FLASH->ACR |= (0x02<<FLASH_ACR_LATENCY_Pos); 

    RCC->CFGR |= (0x00<<RCC_CFGR_PPRE2_Pos)

            | (0x04<<RCC_CFGR_PPRE1_Pos)

            | (0x00<<RCC_CFGR_HPRE_Pos);

    RCC->CFGR |= (0x02<<RCC_CFGR_SW_Pos);

    while((RCC->CFGR & RCC_CFGR_SWS_Msk) != (0x02<<RCC_CFGR_SWS_Pos))

  {

  }

    RCC->CR &= ~(1<<RCC_CR_HSION_Pos);

    return 0;

}

void PortInit(void)

{

  RCC->APB2ENR |= RCC_APB2ENR_IOPEEN;

  GPIOE->CRH &= ~(GPIO_CRH_MODE15 | GPIO_CRH_CNF15);

    GPIOE->CRH |= (0x02 << GPIO_CRH_MODE15_Pos) | (0x00 << GPIO_CRH_CNF15_Pos);

}

void PortSetHi(void)

{

  GPIOE->ODR |= (1<<15);

}

void PortSetLow(void)

{

  GPIOE->ODR &= ~(1<<15);

}

void main()

{

  int i;

  ClockInit();

  PortInit();

   for(;;)

  {

    PortSetHi();

    for(i=0; i<0x40000; i++)

      ;

    PortSetLow();

    for(i=0; i<0x40000; i++)

      ;

  }

}

Не мигает. Изменил процедуру инициализации порта на вашу версию.

void PortInit(void)
{
  RCC->APB2ENR = RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPEEN;
  GPIOE->CRH = (GPIOE->CRH &~ (GPIO_CRH_CNF15 | GPIO_CRH_MODE15)) | GPIO_CRH_MODE15;
}

Ничего. Наверное, надо сдаваться

 

21.06.2021 в 22:35, Ivan Rusev сказал:

//////////////

Прошиваю st-link. К компьютеру usb, к плате контакты swd

Изменено пользователем Falconist
Оверквотинг
Ссылка на комментарий
Поделиться на другие сайты

Сдаваться не надо. Контроллер всегда запускается на внутреннем генераторе, поэтому уберите ClockInit(). Запустите отладчик (Debug) и в пошаговом режиме посмотрите, что выполняется.

В режиме отладки можно посмотреть все регистры. Задержка у вас стоит очень маленькая, 40000 при частоте 8 МГц это около 5 мС. В режиме отладки видно без светодиода, что выход изменяет состояние.

Сам пишу в Кейле поэтому по IAR подсказать не смогу.

Ссылка на комментарий
Поделиться на другие сайты

В Coocoxe  должно всё запустится с пол оборота. Правда он этот кокс "тормоз"- забросили его китайцы. Но ,для чайников он самый раз. Постепенно распилите. В нём есть примеры рабочие. Запустите и посмотрите на код. Я сам чайник. Просто интересуюсь очень многими вещами.И STM и инверторы, и всякие Тесла с качерами. (Плюс орехи с пчёлами)на всё времени не хватает. Если хотите стать профи в STM32 надо "нырнуть" только в них. По- другому не получится. Знаю по себе.

Попробуйте на регистрах. Самый простой путь. В камне нет Хала с CMSIS  и указателей. И код не получается больше. Это выдумали чтобы удобно смотреть чужой код.Проверить и с умным видом указать новичку: "Вам сначала надо С выучить". От этого новичок падает в  ступор . Ему надо добавить к прибору индикацию ,интерфейс и др., он умеет паять усилители, генераторы,радиостанции. А его заставляют учить С и С++. Подключить рабочий простой проект,там уже дефайнов и инклюдов накидано, а потом  добавить свой на регистрах запилить камень и забить на С с С++++сом.

Изменено пользователем Shalfey
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...