Jump to content

    

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

Edited by IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Share this post


Link to post
Share on other sites
      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;

 

(круглый)

Edited by kolobok0

Share this post


Link to post
Share on other sites

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

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

Share this post


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

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

100%

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
Причём проверить режим порта, прочитав регистры, способны лишь полубоги, видимо :laughing:

 

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

Share this post


Link to post
Share on other sites
Да ладно вам. Там много чего есть. Начинающим трудно разобраться.

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

Share this post


Link to post
Share on other sites

Нынче надо читать мануал и про HAL и про МК. Двойная работа..

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this