NXP i.MX7D таймер общего назначения

Простейший код начальной настройки модуля GPT.

	@ Определить источник тактирования
	MOV32 R0, CCM_BASE + TARGET_ROOT114 @ GPT1_CLK_ROOT
	MOV32 R1, 1 << ROOT_ENABLE + 2 << MUX + (1-1) << PRE_PODF + (1-1) << POST_PODF
	STR R1, [R0] @ Источник: SYS_PLL_PFD0, частота ~~392МГц

	@ Затактировать модуль
	MOV32 R0, CCM_BASE + CCGR124  @ GPT1 clock gate
	MOV R1, 0x00003333
	STR R1, [R0]


	MOV32 R0, GPT1_BASE

	@ Сбросить таймер
	MOV R1, 1 << SWR
	STR R1, [R0, GPT_CR]
	@ Дождаться завершения сброса
	1:
	LDR R1, [R0, GPT_CR]
	TST R1, 1 << SWR
	BNE 1b

	@ Настроить делитель входящей частоты
	MOV R1, 1 - 1 @ Делитель на 1
	STR R1, [R0, GPT_PR]

	@ Установить режимы
	MOV32 R1, 1 << CLKSRC + 1 << FRR
	STR R1, [R0, GPT_CR]
	BIS R1, 1 << GPT_CR_EN @ И включить таймер
	STR R1, [R0, GPT_CR] @ Уже работает!

	@ Прочитать и напечатать значение счётчика
	LDR R3, [R0, GPT_CNT]
	printf "GPT = %R3H\n"