реклама на сайте
подробности

 
 
> Cyclone V baremetal hellow world
RadiatoR
сообщение Jul 23 2017, 08:38
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Всем доброго дня.
Написал небольшое приложение, которое выводит значение кнопки Key в консоль (плата de0-nano-soc).
Кнопка висит на GPIO54 (J18), что находится в группе GPIO1 со сдвигом (1 << 25). Пытаюсь прочитать ее значение с регистра ext_port_a, но она всегда в одном и том же состоянии - выключена. Такое ощущение, что не включено тактирование (аля как в STM32). Но регистр ext_port_a для GPIO0 иногда меняется. Видимо я что-то упустил? Не могу понять.
Вот код:

CODE
#include
#include "Types.h"

#define GPIO_BASE 0xFF708000
#define GPIO_0 GPIO_BASE
#define GPIO_1 GPIO_0 + 0x1000
#define GPIO_2 GPIO_1 + 0x1000

#define GPIO_EXT_PORT_A 0x50

#define GPIO_0_EXT_PORT_A GPIO_0 + GPIO_EXT_PORT_A
#define GPIO_1_EXT_PORT_A GPIO_1 + GPIO_EXT_PORT_A
#define GPIO_2_EXT_PORT_A GPIO_2 + GPIO_EXT_PORT_A

void delay(unsigned long long delay)
{
while(delay--);
}

#define PIN 25

void main()//int argc, char** argv
{
unsigned int step = 0;
//scanf("%d", &step);
while(true)
{
if((*((uint *)GPIO_0_EXT_PORT_A) & ((uint)1 << PIN)) > 0) printf("ON! gpio_0 Iteration: %d\n", step);
else printf("OFF! gpio_0 Iteration: %d\n", step);

if((*((uint *)GPIO_1_EXT_PORT_A) & ((uint)1 << PIN)) > 0) printf("ON! gpio_1 Iteration: %d\n", step);
else printf("OFF! gpio_1 Iteration: %d\n", step);

if((*((uint *)GPIO_2_EXT_PORT_A) & ((uint)1 << PIN)) > 0) printf("ON! gpio_2 Iteration: %d\n", step);
else printf("OFF! gpio_2 Iteration: %d\n", step);

printf("\n");

step++;

delay(100000000);
}
}


Заранее спасибо!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01882 секунд с 7
ELECTRONIX ©2004-2016