Что вставить предварительно скомпилированный заголовок? (MSVC)

Вот первая попытка. Подумайте об использовании предохранителей, пока мы не убедимся, что именно так можно подключить DFRobot Motor HAT к плате. Точкой подключения на моторе является зеленая цифровая шина.

import pyb                                                                  

# don't use timers 2,3,5,6                                                  

'''                                                                         
connect:                                                                    
pyboard   Motor Hat                                                         
  X1         4                                                              
  X3         3          
 GND        GND                                            
'''                                                                         

FREQ = 50                                                                   

backward = pyb.Pin('X1' ,pyb.Pin.OUT_PP)                                    
speed = pyb.Timer(9, freq=FREQ).channel(1, pyb.Timer.PWM,\
                  pin = pyb.Pin('X3'))                                                                             

while True:                                                                 
    backward.high()                                                         
    for percent in range(100):                                                 
        speed.pulse_width_percent(percent + 1)
        pyb.delay(10)
    speed.pulse_width_percent(0)

    backward.low()
    for percent in range(100):
        speed.pulse_width_percent(percent + 1)
        pyb.delay(10)
    speed.pulse_width_percent(0)

Я предположил, что FREQ составляет 50 Гц, это то, что для многих сервоприводов, и я предполагаю, что Arduino использует это как значение по умолчанию для ШИМ (широтно-импульсной модуляции).

Подключите двигатель к разъему M1, а батарею - к разъему питания двигателя. Не подключайтесь к v + на pyboard. Приведите в действие ваш компьютер с собственным источником питания. Ваша моторная шляпа, вероятно, создает много электрических помех.

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

удачи

38
задан rlbond 27 March 2009 в 00:22
поделиться

4 ответа

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

При генерации предварительно скомпилированного заголовочного файла компилятор анализирует текст заголовка (значительная задача!), и преобразовывает его в двоичный формат, который оптимизирован для преимущества компилятора.

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


(позже дополнение)

Одной вещью, которую Вы не должны включать в предварительно скомпилированный заголовок, являются файлы, которые являются частью Вашего проекта и часто изменяются, даже если каждый.CPP файл включает эти файлы.

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

У Вас мог бы быть простой файл (например, "StringDefs.h"), что все использует. Если StringDefs.h включен в stdafx.h, и один разработчик касается StringDefs.h, то каждый разработчик должен ожидать, пока весь предварительно скомпилированный заголовок не перекомпилировал. Это было бы намного быстрее, если бы StringDefs.h был упущен из предварительно скомпилированного заголовка и проанализирован наряду с каждым.CPP файлом.

50
ответ дан Andrew Shepherd 27 November 2019 в 03:43
поделиться

Одно дополнение к ответу Andrew Shepherd. Используйте предварительно скомпилированный заголовок для заголовочных файлов, которые являются внешними к Вашему проекту для файлов то изменение нечасто. При изменении заголовочных файлов в текущем проекте все время, вероятно, не стоит предварительно скомпилировать их.

6
ответ дан George V. Reilly 27 November 2019 в 03:43
поделиться

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

-1
ответ дан Andy 27 November 2019 в 03:43
поделиться

Я написал статью о методах сокращения времени компиляции. Среди этих методов сообщение о предварительно скомпилированном заголовке и его применении можно найти здесь . В нем также есть раздел о передовых методах, который может вас заинтересовать. Включены сценарии CMake, которые прозрачно обрабатывают его.

4
ответ дан 27 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: