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

stm32f405rg6 странная форма импульсов

Доброго времени суток ув. форумчане

продолжаю освоение 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);

вывожу в порт вот так

#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, случается, что импульсы становятся длинней и тогда амплитуда, до которой дорастает импульс выше, что видно на последнем импульсе на фото. нога висит в воздухе

post-88307-1458936441_thumb.jpg

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Поделиться сообщением


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

      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;

 

(круглый)

Изменено пользователем kolobok0

Поделиться сообщением


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

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

Тут, судя по всему, порт переключился в режим "открытый коллектор".

Поделиться сообщением


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

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

Тут, судя по всему, порт переключился в режим "открытый коллектор".

100%

открытый сток :)

Поделиться сообщением


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

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

Тут, судя по всему, порт переключился в режим "открытый коллектор".

Причём проверить режим порта, прочитав регистры, способны лишь полубоги, видимо :laughing:

Поделиться сообщением


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

Причём проверить режим порта, прочитав регистры, способны лишь полубоги, видимо :laughing:

 

Да ладно вам. Там много чего есть. Начинающим трудно разобраться.

Поделиться сообщением


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

Да ладно вам. Там много чего есть. Начинающим трудно разобраться.

Помнится, волею судеб первый МК был 80C166. Для начинающих тоже не сахар, наверное. Прочитал бумажный мануал от корки до корки, некоторые части дважды. Ничего, осилилось. Или это нынче не модно? Нужно за ручку и с поглаживанием по головке?

Поделиться сообщением


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

Нынче мануал на ф4 - это 1700 страниц

Плюс примерно столько же на само АРМ ядро

 

Поделиться сообщением


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...