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

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 18:17:08

Мурик, у меня точно такая же плата
Изображение
Под неё правил скетч в Arduino IDE, заливал через ST-Link, светодиод моргает как и положено. Сейчас снёс Keil, переустановил его, доустановил паки под семейство, в установленных паках нашёл пример для Nukleo (на том же проце F103C8), в функцию main вставил свой код
СпойлерRCC->APB2ENR |= RCC_APB2ENR_IOPCEN;

// ????????????? CRL ????????.
GPIOC->CRH &= ~GPIO_CRH_CNF13; // ?????????? ???? CNF ??? ???? 13. ????? 00 - Push-Pull
GPIOC->CRH |= GPIO_CRH_MODE13_0; // ?????????? ??? MODE0 ??? 13 ????. ????? MODE01 = Max Speed 10MHz

GPIOC->ODR &= ~GPIO_ODR_ODR13; // ??????? 0 ?? PC13
Снова пересобрал проект, залил, светодиод так и не зажёгся.

Кусок кода впихивал после всех инициализаций. Чтоб ничто ненароком не погасило светодиод, после своего куска поставил заглушку "while (1) {}". Грешу на свой кусок кода, скорее всего не то и не в те регистры впихивается.
ПОМОГИТЕ! :cry:

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 18:42:18

Nicochip, держи.
Keil_Led_Blink.zip
(238.7 KiB) Скачиваний: 256

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 19:22:11

Nicochip писал(а):у меня точно такая же плата
По той ссылке что я дал, есть несколько прошивок. Проверяли их?
Постарайтесь разобраться с отладкой и посмотрите из-за чего не работает. Про отладку (не кейл, но может чем-то поможет). http://purebasic.mybb.ru/viewtopic.php?id=564

VladislavS, у вас нестандартные файлы.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 19:43:39

Nicochip, держи.

Вы можете ответить, зачем простое объяснять сложно? Да и не просил он помигать диодом за него.

Добавлено after 5 minutes 26 seconds:
Снова пересобрал проект, залил, светодиод так и не зажёгся.

И не зажжется. Вы в ноль выход выставляете.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 19:49:27

VladislavS, у вас нестандартные файлы.
Можно с этого места поподробнее? Что там нестандартного?

Вы можете ответить, зачем простое объяснять сложно?
Можно с этого места поподробнее? В каком месте сложно?

Да и не просил он помигать диодом за него.
И что? Мой пример - хочу мигаю, хочу не мигаю. Не нравится -> корзина.

И не зажжется. Вы в ноль выход выставляете.
Зажжется. У него катод на PC13.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:07:20

Можно с этого места поподробнее? В каком месте сложно?

Вы наворотили подключаемых файлов с билибердой, которая в данном случае ничего не упрощает и не проясняет. Если уж так хотелось, надо было прямо в его коде вставить пару-тройку строк, а не какой-то геммор с прерываниями систика мутить.
Зажжется. У него катод на PC13.

Тфу, прошу пардону. Спутал. Действительно нулем зажигается.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:16:33

VladislavS писал(а):Что там нестандартного?
Все, кроме startup_stm32f10x_md.s и stm32f10x.h.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:22:42

Все, кроме startup_stm32f10x_md.s и stm32f10x.h.
Стартап и заголовочный файл, значит, стандартные - уже хорошо. Поехали дальше. main в каком месте нестандартный? SystemInit, вызываемый из стандартного стартапа, в каком месте нестандартный?

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:24:30

VladislavS "Error: Flash Download failed - "Cortex-M3""

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:26:57

Отладчик то на ST-Link переключил?

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:28:09

VladislavS писал(а):Поехали дальше. main в каком месте нестандартный?
В месте cpp. :)))

VladislavS писал(а):SystemInit, вызываемый из стандартного стартапа, в каком месте нестандартный?
В том что он должен быть в стандартном файле system_stm32f10x.c от ST и иметь совсем другой код. :)

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:30:11

Мурик, не мешайте художнику самовыражаться. Он еще до замыканий с лямбдами не дошел. Диодом же перед новичками мигаем, дело крайне серьезное.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:31:42

Против подхода VladislavS ничего не имею но такой код не для новичков. Не то чтобы он сложный, просто нестандартный.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:33:17

У вас нет ощущения, что одна часть предложения противоречит другой?

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:41:08

Странно как-то. Человек использует "плюсы", модульность, ... А его говном облили.
Что за люди ... :facepalm:

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:41:44

Да, кстати , Мурик же эксперд по плюсам, а тут нате не признал.

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:53:02

Да нет там плюсов как таковых. Там только заготовка, чтобы их будущее использование не сломало проект.

А в "стандартном" system_stm32f10x.c овер 1000 строк шлака новичёк, конечно же, будет как рыба в воде, а в моём на 10 строк тут же запутается :)

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 20:53:59

Странно как-то. Человек использует "плюсы", модульность, ... А его говном облили.
Что за люди ... :facepalm:

За то, что на чисто Си-шный вопрос он ответил каким-то плюсовым суржиком в запутанной форме ? Вот сволочи!

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 21:00:08

Даже и не знаю, что в этом примере вас Муриком могло запутать :roll:

Re: Stm32 с чего начать изучение...

Вт ноя 20, 2018 21:02:23

Досик, если код предложенный VladislavS, "замигает" у Nicochip, то он может начать его использовать как основу для своих прог. Но коде тактирование вообще не настраивается и МК работает на 8 МГц от HSI.
Поэтому я пишу что код нестандартный и не нужно его предлагать начинающему.

Аlex писал(а):Что за люди
Алекс, я выше написал почему этот код не годится для новичков и дело вовсе не в C++. О какой модульности вы пишите непонятно.

VladislavS писал(а):а в моём на 10 строк тут же запутается
Каким образом в вашем коде настраивается тактирование МК?
Код можно было вовсе упростить до такого.
Спойлер
Код:
include "stm32f10x.h"

#define StackTop  ((uint32_t)(0x20000000 + 20*1024))

static void Reset_Handler(void);

__attribute__((used,section(".isr_vector")))
void (*const g_pfnVectors[])(void) =
{
  (void*)StackTop, // Указатель на начало стека.
  Reset_Handler    // Функция выполняемая при сбросе МК.
};

static void Reset_Handler(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Вкл. тактирование порта GPIOC.
    GPIOC->CRH |= GPIO_CRH_MODE13;      // Настройка вывода PC13 как выхода.

    while(1)
    {
        GPIOC->ODR ^= (1<<13);         // Инвертирование состояния вывода PC13.
        for (volatile uint32_t i=0; i<1000000; i++);
    }
}
Ответить