Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ ARM, 32bit _ Просто_Светодиод

Автор: Ekka Sep 10 2018, 13:58

Привет всем... Который час бьюсь головой об клавиатуру, МК STM32F103RBT6, среда CoIDE просто пытаюсь поморгать светодиодом
на новом для меня МК. Вродь все правильно настраиваю. Итог ноль. Ничего не моргает.
Лезу в даташит по этому МК - нифига не найду, на котором пине висят светодиоды (Если можно, ткните носом, где они)
Ну или, пожалуйста, подскажите мне, ламеру, может, я что-то пропускаю????

Сразу скажу, что задержки поставлены наитупые для простоты. Знаю, что лучше таймерами. В отладке тоже делалось - ноль эффекта.

И если можно, ткните, пожалуйста носом, где и в каком мануале пины смотреть.

Код
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

int main(void)
{
    SystemInit();
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_SetBits(GPIOC, GPIO_Pin_13);


    volatile  int i = 0;
    while(1)
    {
        for(i=0; i< 10000; i++);
        GPIO_SetBits(GPIOC, GPIO_Pin_13);
        for(i=0; i< 10000; i++);
        GPIO_ResetBits(GPIOC, GPIO_Pin_13);
    }
}

Автор: Harvester Sep 10 2018, 14:06

Цитата(Ekka @ Sep 10 2018, 16:58) *
Лезу в даташит по этому МК - нифига не найду, на котором пине висят светодиоды (Если можно, ткните носом, где они)

Кто же лучше Вас может знать, где они висят? cranky.gif

Автор: Ekka Sep 10 2018, 14:21

Цитата(Harvester @ Sep 10 2018, 14:06) *
Кто же лучше Вас может знать, где они висят? cranky.gif

Имею ввиду, которые в самой платке находятся. Плата NUCLEO-F103RB

Автор: ivan24190 Sep 10 2018, 14:33

Вызов функции GPIO_StructInit(), по моему мнению,
нужно делать до инициализации конкретного пина,
дабы сбросить неиспользуемые поля структуры в начальное состояние.
А у Вас этот вызов выполняется после, что приводит к неверным настройкам пина.

Автор: Ekka Sep 10 2018, 14:47

Цитата(ivan24190 @ Sep 10 2018, 14:33) *
Вызов функции GPIO_StructInit(), по моему мнению,
нужно делать до инициализации конкретного пина,
дабы сбросить неиспользуемые поля структуры в начальное состояние.
А у Вас этот вызов выполняется после, что приводит к неверным настройкам пина.


Не помогло(

Автор: wim Sep 10 2018, 14:49

Цитата(Ekka @ Sep 10 2018, 16:58) *
где и в каком мануале пины смотреть.

stm32f103tb.pdf
RM0008.pdf
И на отладочную плату мануал, есс-но: http://electronix.ru/redirect.php?http://files.amperka.ru/datasheets/nucleo-usermanual.pdf

Автор: Ekka Sep 10 2018, 14:59

Цитата(wim @ Sep 10 2018, 14:49) *
stm32f103tb.pdf
RM0008.pdf
И на отладочную плату мануал, есс-но: http://electronix.ru/redirect.php?http://files.amperka.ru/datasheets/nucleo-usermanual.pdf
Спасибо большое) нашлись мои пины.... Правда, как-то непонятно написано. Сигнал D13, а вывод PA5 ИЛИ PB13( Но мои попытки подергать и тем и другим не увенчались успехом(

Автор: wim Sep 10 2018, 15:33

Цитата(Ekka @ Sep 10 2018, 17:59) *
попытки подергать и тем и другим не увенчались успехом(
Так надо в отладчике регистры посмотреть - правильно ли порт настроен, тактирование включено, нет.

Автор: DASM Sep 10 2018, 15:45

дело не в этом, но в будущем
for(i=0; i< 10000; i++);
лучше заменить на volatile int i и далее. иначе мигать начнет мегагерцами, сколько бы сотен тысяч вы в условии цикла не написали

Автор: Corvus Sep 10 2018, 15:50

Возможно, в настройках проекта что-то не то накрутили.
Покажите исправленный код для PA5 (на нём висит светодиод)

Гуру-эмбеддеры меня сейчас заклюют, но я бы советовал скачать CubeMX, там выбрать нужную отладочную плату. Останется только сгенерить проект и добавить цикл с переключением в main ().
ИМХО, это самый простой и быстрый способ для новичка.

Автор: DASM Sep 10 2018, 16:01

Цитата(Corvus @ Sep 10 2018, 18:50) *
Возможно, в настройках проекта что-то не то накрутили.
Покажите исправленный код для PA5 (на нём висит светодиод)

Гуру-эмбеддеры меня сейчас заклюют, но я бы советовал скачать CubeMX, там выбрать нужную отладочную плату. Останется только сгенерить проект и добавить цикл с переключением в main ().
ИМХО, это самый простой и быстрый способ для новичка.

чего тут клевать то? постоянно пользую

Автор: aaarrr Sep 10 2018, 16:07

Цитата(Ekka @ Sep 10 2018, 17:59) *
Сигнал D13, а вывод PA5 ИЛИ PB13( Но мои попытки подергать и тем и другим не увенчались успехом(

А вывод смотреть в таблицах, как и написано. В вашем случае Table 12, сигнал D13 соответствует PA5.

Для начала рекомендую просто зажечь светодиод, без всяких SystemInit(). И выше совершенно верно указали,
что вызов GPIO_StructInit() уничтожит содержимое ранее заполненных полей структуры.

Автор: Ekka Sep 10 2018, 19:48

СПАСИБО большое всем) Дело было в моей невнимательности. Вывод PA5 отлично сработал, просто нужно было убрать совсем StructInit() и SystemInit() и все заработало. Эхх(... Можно закрыть топик

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)