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

Создание проекта на assembler в STM32F4

добрый вечер, не знаю с чего начать создание проекта STM32F401 на ассемблере. Необходимо реализовать функцию матлогики Y=(!A)*C+(!B)*(!C)+ A*(!C) , где в качестве выходного сигнала выступает сигнал Y (светодиод) и входныесигналы А, В, С (подключаемые кнопки ) 

93EEA387-2BB4-41CF-B3F9-23057F6843EE.jpeg

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


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

27 minutes ago, Ivanyshka said:

 начать создание проекта STM32F401 на ассемблере.

На этом и закончить или пишите на С/С++.

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


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

6 hours ago, Ivanyshka said:

добрый вечер, не знаю с чего начать создание проекта STM32F401 на ассемблере.

Скажите, пожалуйста, а раз вам дают такие задания, разве не обучали работе с инструментарием?

Ну вот, поглядите)

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


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

Это стандартное задание, во все времена это было на разных камнях. Там никто не будет ничего проверять и чего-то загружать, надо просто сделать инициализацию, написать эту формулу на ассемблере, суметь объяснить почему, как, куда и всего делов.

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


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

2 hours ago, s_gary said:

Там никто не будет ничего проверять

Вот сие и есть плохо... то, что это стандартный пример - понятно. Но потом такой соискатель придёт на реальную работу, и... ничего сделать не сможет) Хотя, может быть я слишком категоричен)

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


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

18 минут назад, haker_fox сказал:

Вот сие и есть плохо... то, что это стандартный пример - понятно. Но потом такой соискатель придёт на реальную работу, и... ничего сделать не сможет)

...и станет вашим начальником. Потому что сам разрабатывать не умеет, значит пойдёт руководить.  :yes3:

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


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

9 minutes ago, jcxz said:

 Потому что сам разрабатывать не умеет, значит пойдёт руководить.  :yes3:

На кой нужен такой руководитесь, если даже для такой примитивной задачи не может найти исполнителя :don-t_mention:

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


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

Берём С++ и лёгким движением руки получаем половину курсовика :) Осталось вставить это в стандартный стартап, включить тактирование портов и настроить Y на выход.

  bool A = PA_0::read();
  bool B = PB_0::read();
  bool C = PC_0::read();
  PD_0 Y;
  Y = (!A)*C + (!B)*(!C) + A*(!C);

// Листинг
//bool A = PA_0::read();
        LDR.N    R2,??main_0      ;; 0x48000010
        LDR      R3,[R2, #+0]
//bool B = PB_0::read();
        LDR      R4,[R2, #+1024]
//bool C = PC_0::read();
        LDR      R5,[R2, #+2048]
//PD_0 Y;  
//Y = (!A)*C + (!B)*(!C) + A*(!C);  
        AND      R6,R3,#0x1
        AND      R4,R4,#0x1
        AND      R0,R5,#0x1
        EOR      R6,R6,#0x1
        AND      R1,R5,#0x1
        ORRS     R4,R0,R4
        AND      R5,R5,#0x1
        ANDS     R6,R1,R6
        EOR      R4,R4,#0x1
        AND      R3,R3,#0x1
        EOR      R5,R5,#0x1
        ORRS     R4,R4,R6
        ANDS     R3,R5,R3
        ORRS     R3,R3,R4
        ITE      NE 
        MOVNE    R0,#+65537
        MOVEQ    R0,#+65536
        STR      R0,[R2, #+3080]

Замечу лишь, что выбор других пинов под A,B,C,Y меняют код полностью. Это делает написание подобного кода на асме дурной работой. 

 

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


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

2 часа назад, VladislavS сказал:

Замечу лишь, что выбор других пинов под A,B,C,Y меняют код полностью. Это делает написание подобного кода на асме дурной работой. 

Если делать с умом да с использованием макросов (а например в IAR-овском ассемблере макроязык богаче си-шного), то ничего страшного. И можно написать код, который скорей всего никак не будет меняться со сменой пинов.

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


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

8 минут назад, jcxz сказал:

И можно написать код, который скорей всего никак не будет меняться со сменой пинов.

Это если сильно неоптимально писать. Пины то могут быть на одном порту и тупо лишних чтений порта не надо делать.

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


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

7 минут назад, VladislavS сказал:

Это если сильно неоптимально писать. Пины то могут быть на одном порту и тупо лишних чтений порта не надо делать.

И это тоже можно в макросе предусмотреть и не делать лишних чтений если порт совпадает, а использовать старое значение из регистра.

Хотя для студенческого задания это уже избыточно будет.

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


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

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

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

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

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

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

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

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

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

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