Наконец-то добрался до ARM..

Первым делом помигал диодами на STM32 Discovery.


while(1)
  {
   if(STM32vldiscovery_PBGetState(BUTTON_USER) == 1)
      {
	    STM32vldiscovery_LEDOn(LED3); //Включить
		STM32vldiscovery_LEDOff(LED4);
	  }
	else
	  {
   		STM32vldiscovery_LEDOff(LED3);//Выключить
   		STM32vldiscovery_LEDOn(LED4);	 
      }
  }
}


Завтра буду нападать на семисегментные индикаторы и прочую мелочь. Потом UART и т.д.
Все. Пойду спать :)
  • 0
  • 25 апреля 2011, 01:18
  • dcoder

Комментарии (12)

RSS свернуть / развернуть
Я тоже сперва помигал диодом разными способами (программно, таймером, ртс), потом забросил на 2 месяца, а затем перешел на асм (кайф:)
0
  • avatar
  • psv
  • 25 апреля 2011, 15:59
Не слишком хардкорно? На асме да под ARMы…
0
Да все как-то искусственно усложнено. Покурил мануалы, попробовал — на деле: асм удобнее (сравню с авр), длина кода на самбе2 можно сделать и меньше авр, переносимость асма в серии что 100 что 200 идеальная (в отличии от авр) и всего больше. Особенно нравится много озу — люблю с графикой работать. Попробую какую-нить игру написать для 0108 жки.
0
Вот только в функции, которую я на паскале написал сразу без ошибок — после переписывания на асме отловил с пяток серьезных багов. Да и времени на нее затратил на порядок больше даже без учета ловли багов.
Хотя я не ассемблерщик, да.
0
Мне тоже привычнее писать на языке высокого уровня. А отдельные критичные куски программы можно и на асме.

Но полностью код на нем пишу крайне редко… хотя, что-то в ассемблере есть такое, чего нет ни в Паскале, ни в Си. Что-то неуловимое, низкоуровневое :)
0
А я бы там даже не полез в асм, не будь микропаскаль столь крив и убог. На С надо переползать, но недоеденный кактус обладает какой-то притягательной силой :D
0
А представь, что вся периферия уже описана и разложена по файлам. А дальше пишешь себе на макросах и все в порядке. Лиха беда — начало.
0
Ладно, опять я лезу своим асмом, простите. Просто тяжело быть одному — вот и агитирую всех.
0
В том куске периферии не было вообще. Чисто логика. Причем не того уровня, когда путаться в if'ах начинаешь даже в высокоуровневом языке)
А с периферией все просто, MOV IOREG, #CONST во всех языках идентичен.
0
AVR:
mov reg, const
out io_reg, reg
0
STM32

ldr reg0,=const
ldr reg1,=io_reg
str reg0,[reg1]
0
Если на то пошло, то в С это вообще IOREG=CONST;
Но это детали и путаться тут не в чем. Хотя если с периферией связан какой-то алгоритм — то на нем будет уже заметнее.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.