Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32f405rg6 странная форма импульсов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Reystlin
Доброго времени суток ув. форумчане
продолжаю освоение stm32 и столкнулся с проблемой, которую не могу объяснить.
инициализирую порт вот таким образом
Код
      GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

вывожу в порт вот так
CODE
#define LO_lcd_rst GPIO_ResetBits(GPIOB, GPIO_Pin_14)
#define HI_lcd_rst GPIO_SetBits(GPIOB, GPIO_Pin_14)

#define LO_lcd_cs GPIO_ResetBits(GPIOB, GPIO_Pin_12)
#define HI_lcd_cs GPIO_SetBits(GPIOB, GPIO_Pin_12)

#define LO_mosi GPIO_ResetBits(GPIOB, GPIO_Pin_15)
#define HI_mosi GPIO_SetBits(GPIOB, GPIO_Pin_15)

#define LO_clk GPIO_ResetBits(GPIOB, GPIO_Pin_10)
#define HI_clk GPIO_SetBits(GPIOB, GPIO_Pin_10)

LO_clk;
HI_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<15) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<14) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<13) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<12) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<11) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<10) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<9) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<8) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
HI_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<7) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<6) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<5) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<4) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<3) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<2) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<1) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;

LO_clk;
(data & 1<<0) ? HI_mosi : LO_mosi;
swSpiDelay
HI_clk;



на выходах МК имею картину, что на фото в аттаче
в проекте используется FreeRTOS, случается, что импульсы становятся длинней и тогда амплитуда, до которой дорастает импульс выше, что видно на последнем импульсе на фото. нога висит в воздухе
kolobok0
Цитата(Reystlin @ Mar 25 2016, 23:09) *
Код
      GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
....
нога висит в воздухе


чиссо как пример инициализации структуры

Код
    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;


(круглый)
Reystlin
помогло, благодарюsm.gif
esaulenka
Да, в этих библиотеках надо обязательно инициализировать все поля структур-параметров. Иначе возможны разнообразнейшие приключения.
Тут, судя по всему, порт переключился в режим "открытый коллектор".
Tarbal
Цитата(esaulenka @ Mar 29 2016, 13:44) *
Да, в этих библиотеках надо обязательно инициализировать все поля структур-параметров. Иначе возможны разнообразнейшие приключения.
Тут, судя по всему, порт переключился в режим "открытый коллектор".

100%
открытый сток sm.gif
scifi
Цитата(esaulenka @ Mar 29 2016, 12:44) *
Да, в этих библиотеках надо обязательно инициализировать все поля структур-параметров. Иначе возможны разнообразнейшие приключения.
Тут, судя по всему, порт переключился в режим "открытый коллектор".

Причём проверить режим порта, прочитав регистры, способны лишь полубоги, видимо laughing.gif
Tarbal
Цитата(scifi @ Mar 29 2016, 16:42) *
Причём проверить режим порта, прочитав регистры, способны лишь полубоги, видимо laughing.gif


Да ладно вам. Там много чего есть. Начинающим трудно разобраться.
scifi
Цитата(Tarbal @ Mar 29 2016, 20:15) *
Да ладно вам. Там много чего есть. Начинающим трудно разобраться.

Помнится, волею судеб первый МК был 80C166. Для начинающих тоже не сахар, наверное. Прочитал бумажный мануал от корки до корки, некоторые части дважды. Ничего, осилилось. Или это нынче не модно? Нужно за ручку и с поглаживанием по головке?
Alechek
Нынче надо читать мануал и про HAL и про МК. Двойная работа..
niXto
Нынче мануал на ф4 - это 1700 страниц
Плюс примерно столько же на само АРМ ядро
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.