Прежде чем пытаться понять код, который вы нашли, пожалуйста, поймите, как работает периферийный модуль таймера, а затем поймите, как вы можете настроить его регистры для получения желаемого выхода.
Как периферийный блок таймераработает? Это аппаратный модуль, который встроен в микроконтроллер вместе с процессором и другими периферийными устройствами.Все периферийные модули внутри микроконтроллера синхронизированы с общим источником синхронизации.Что касается кода, то частота таймера для таймера составляет 24 МГц, который затем предварительно масштабируется до 128, что означает, что он будет работать на частоте 187500 Гц.Теперь эта частота будет зависеть от конфигурации часов и генератора.
Теперь модуль таймера имеет регистр счетчика, который может считать до своего размера в битах, который может быть 8,16 или 32 в целом.Как только вы включите счет, этот счетчик начнет увеличивать или уменьшать счет нарастания или спада или на обоих краях.Теперь у вас есть выбор: хотите ли вы увеличить счет (от 0 до 255 для 8-битного) или уменьшить счет (от 255 до 0), и вы хотите рассчитывать, на каком фронте тактовой частоты.
Теперь, на187500 Гц, 1 цикл = 5,333333 сша, если вы рассчитываете один раз в 1 цикле либо при нарастающем, либо при спадающем фронте и, например, если значение счетчика = 100 (счет с повышением), общее прошедшее время составляет 5,33333 * 100 = 533us.Теперь вам нужно установить значение сравнения для счетчика, чтобы установить этот период, который будет зависеть от вашей скорости вспышки.Это значение сравнения будет сравниваться со значением вашего счетчика в компараторе Timer, и как только оно совпадет, оно отправит сигнал прерывания, если вы включили генерацию прерываний при сравнении сравнения, где вы можете переключить свой светодиод.
Я надеюсь,Вы поняли, как работает таймер.В вашем примере кода Timer настроен на получение события сравнения сравнения с частотой 10 Гц.так что сравнивайте значение 187500/10 = 18750., в течение 1 секунды вы можете оставить его 187500/1.у вас есть регистр управления таймером TMR0_CTRL, где вы можете настроить, хотите ли вы считать вверх или вниз, рассчитывать на падение / повышение / оба фронта, считать только один раз / непрерывно, считать до сравниваемого значения и затем сбрасывать или продолжать считать до его предела.Обратитесь к руководству по микроконтроллеру для получения подробной информации о каждом битовом поле.