Перейти к содержимому


Фото
- - - - -

LDM-HELPER-K1921BK01T

LDM-HELPER-K1921BK01T

  • Чтобы отвечать, сперва войдите на форум
23 ответов в теме

#21 Support

Support

  • Модераторы
  • 70 Сообщений:
  • LDM-SYSTEMS
  • г. Москва

Опубликовано 21 марта 2020 - 10:26

Утро!

А какие программаторы можно использовать с этой платой?

 

ULINK2, ST-Link, J-LINK



#22 WingedPegasus

WingedPegasus

    Ученик

  • Пользователи
  • Фишка
  • 3 Сообщений:

Опубликовано 22 марта 2020 - 16:49

 

Утро!

А какие программаторы можно использовать с этой платой?

 

ULINK2, ST-Link, J-LINK

 

Спасибо!



#23 WingedPegasus

WingedPegasus

    Ученик

  • Пользователи
  • Фишка
  • 3 Сообщений:

Опубликовано 07 июня 2020 - 20:00

Здравствуйте! Пытаюсь завести приведённый ниже пример с использованием библиотеки переферии от НИИЭТ.
Здесь, по нажатию кнопки SA4 должен загораться светодиод. Но светодиод горит всегда, т.е. GPIO_ReadBit по пину всегда читает 1цу.
Вроде пин указал верно. Что я делаю не так?
 

 
#include <system_K1921VK01T.h>
#include <niietcm4.h>

#define LED0_PORT       NT_GPIOC
#define LED0_PIN_MASK   (1 << 13)

#define LED1_PORT       NT_GPIOC
#define LED1_PIN_MASK   (1 << 14)

#define BTN0_PORT       NT_GPIOB
#define BTN0_PIN_MASK   (1 << 12)


void init_peripheral()
{
        GPIO_Init_TypeDef GPIOInit;
        GPIO_StructInit(&GPIOInit);
        GPIOInit.GPIO_Dir = GPIO_Dir_Out;
        GPIOInit.GPIO_Out = GPIO_Out_En;

        /* GPIOC */
        GPIOInit.GPIO_Pin = LED0_PIN_MASK | LED1_PIN_MASK;
        GPIO_Init(NT_GPIOC, &GPIOInit);

        GPIO_StructInit(&GPIOInit);
        GPIOInit.GPIO_Dir = GPIO_Dir_In;

        GPIOInit.GPIO_Pin = BTN0_PIN_MASK;
        GPIO_Init(NT_GPIOB, &GPIOInit);
}


int main()
{
        init_peripheral();

        uint32_t delay_value = 500000;

        while(1)
        {
                volatile uint32_t btn = GPIO_ReadBit(NT_GPIOB, BTN0_PIN_MASK);
                if( btn == Bit_SET )
                        GPIO_SetBits(NT_GPIOC, LED0_PIN_MASK);

        };

        return 0;
}


#24 Support

Support

  • Модераторы
  • 70 Сообщений:
  • LDM-SYSTEMS
  • г. Москва

Опубликовано 09 июня 2020 - 23:39

Доброго времени суток!

 

1) По вашему коду

#define BTN0_PIN_MASK (1 << 12)

маска соответствует линии BOT(1) кнопка SA3, а не SA4. Но, думаю, вы уже все кнопки перепробовали.

 

2) Анализ состояния кнопки и реакция на нее

if( btn == Bit_SET )
   GPIO_SetBits(NT_GPIOC, LED0_PIN_MASK);

выполнена наполовину. В случае положительного уровня "1" вы выставляете на LED0 "1" - светится. Линии кнопок BOT(0...4) имеют подтяжку к +3,3 В и при ненажатой кнопке у вас всегда LED0 включается.

При нажатии на SA3 линия BOT(1) станет "0", и нужно менять состояние LED0.

 

Для верной работы прошу заменить часть кода

if( btn == Bit_SET )
   GPIO_SetBits(NT_GPIOC, LED0_PIN_MASK);
 
на
 
if( btn == Bit_SET )
   GPIO_ClearBits(NT_GPIOC, LED0_PIN_MASK); // SA3 не нажата - выключить LED0 VD8
else
GPIO_SetBits(NT_GPIOC, LED0_PIN_MASK); // SA3 нажата - включить LED0 VD8
 
 
Для Keil_5 можно посмотреть простой пример.





0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 невидимых