Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

Re: Ethernet. Вопросы по интерфейсу и реализации

Вс май 22, 2016 23:34:03

Уфф... Кажется программист из меня плохой. Хотя как будто бы уже год этому учат (семестр С# и потом месяца 3 С++) И на компах вроде бы всё гладко. А вот стоит уйти в МК и сразу всё какое-то мутное...

Попытался проинициализироваться с нуля. Почитал ещё раз Ref.Manual. И не могу заставит её даже светодиодом поморгать. Что я делаю не так?
Спойлер
Код:
#include "system_stm32f7xx.h"
#include "stm32f7xx.h"
#define delay_ms(ms) _delay_((ms)*1600)
 
void _delay_ (uint32_t delay)
{
    while(delay--);
}

int main(void)
{ SystemInit();
   SystemCoreClockUpdate();
   RCC->AHB1ENR |= 0x02;  // Enable GPIOB
  GPIOB->MODER = 0x55555555; // All to GPIO
  GPIOB->OTYPER = 0x00;  // All to push-pull
  GPIOB->OSPEEDR = 0x00; // All to Low-speed
  GPIOB->PUPDR = 0x00;   // No pull-up, pull-down
   
  while (1)
  {
      /*Blink with GPIO pins : PB14 PB7 */
      delay_ms(100);
                GPIOB->ODR |= 0x4080; // '1' to PB14 & PB7
      delay_ms(100);
                GPIOB->ODR = 0x00;   // '0' to PB14 & PB7
  }
}

Re: Ethernet. Вопросы по интерфейсу и реализации

Пн май 23, 2016 10:43:17

Хотя как будто бы уже год этому учат (семестр С# и потом месяца 3 С++)


Это очень мало; более того, C# и C++ в эмбед-программировании не помощники, это вообще другой мир. :) На ПК далеко и надежно скрыто то, что в эмбеде представляет основной интерес. Программист встроенных систем - прежде всего инженер-электронщик, а не алгоритмист.

Вот вы говорите, программа не работает. Как конкретно она не работает? Светодиоды не мигают? Светятся постоянно? Не светятся вообще?

SystemInit() и SystemCoreClockUpdate() вызывать не надо. SystemInit() уже была вызвана в startup-файле, а тактовую частоту вы не меняли.

А так код у вас правильный, если только в константах не ошиблись. "Магические числа" читаются тяжело. Посмотрите stm32f7xx.h, там определены битовые маски для всех регистров, в том числе и для GPIO.

Попробуйте настроить GPIO на высокую скорость и объявить delay (параметр) как volatile.

Re: Ethernet. Вопросы по интерфейсу и реализации

Пн май 23, 2016 12:46:13

Сам не особо в программировании контроллеров, во всяком случае в серьёзном. С STM'ами вообще не давно работаю... Но тем не менее вот файлик для моргалки диодов на плате STM32FDiscovery. Работаю в Keil 5. Понимаю что данная тема не совсем про это но попробуйте. Программка вызывала у меня самого несколько вопросов... но пока никак не дойдут руки поднять их на форуме.
P.S.
При создании проекта не забудте подключить файл startup.s и CIMSIS библиотеки для работы ядра.
Да и задержку надо увеличить...
Вложения
main.c
(1.5 KiB) Скачиваний: 307

Re: Ethernet. Вопросы по интерфейсу и реализации

Пн май 23, 2016 16:54:28

YS писал(а):Это очень мало; более того, C# и C++ в эмбед-программировании не помощники, это вообще другой мир. :) На ПК далеко и надежно скрыто то, что в эмбеде представляет основной интерес. Программист встроенных систем - прежде всего инженер-электронщик, а не алгоритмист.

Дык ведь и тут как будто бы не белые пятна. Устройство МК могу с диаграммами и схемам по доске час расписывать. (вручную их рисуя по ходу беседы). Работу ЦАП, АЦП, ШИМ, АЛУ. Память. Регистры. ТТЛ и КМОП логику малой интеграции могу на транзисторные схемы слёту перерисовывать. В общем, восемь лет уж именно как электронщик. И, наконец, решил постичь это онкое искусство на грани софта и харда -- эмбед.

YS писал(а):А так код у вас правильный, если только в константах не ошиблись. "Магические числа" читаются тяжело. Посмотрите stm32f7xx.h, там определены битовые маски для всех регистров, в том числе и для GPIO.
Попробуйте настроить GPIO на высокую скорость и объявить delay (параметр) как volatile.

Код писал как раз в stm32f7xx.h и заглядывая. В том месте где структура объявлена GPIO_TypeDef. А он будто бы и не реагирует на меня вовсе. Никакого оживления на плате. Тишь да гладь. Но советы попробую.

Re: Ethernet. Вопросы по интерфейсу и реализации

Пн май 23, 2016 19:20:35

А он будто бы и не реагирует на меня вовсе. Никакого оживления на плате.


То есть светодиоды вообще не горят? Тогда проверьте, какую функцию по-умолчанию имеют пины, на которые повешены светодиоды. Некоторые пины после сброса используются, например, для JTAG, и недоступны как GPIO. Тогда их надо переназначать.
Ответить