启用系统AHB时钟至计时器

时间:2019-08-12 14:28:03

标签: timer cpu-registers

我试图理解为LPC11U14 MCU和村田陀螺仪传感器编写的SPI通信代码。我本人对Arduino有经验,听说过指针和移位寄存器,目前正在学习C编程,很有趣。

Full code in PDF

MCU header file

我不清楚此行分配计时器: LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 7);

我了解的SYSAHBCLKCTRL是系统AHB时钟控制寄存器。 LPC_SYSCON是时钟寄存器的指针。但是如何通过将寄存器左移7位来启用时钟?数据表中定义了该寄存器吗?

摘录自代码:

// Enable AHB clock to the 16-bit counter/timer 0 (CT16B0)
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 7);
// MR0 (Match Register 0) will generate an interrupt at 2300 Hz (MCLK is 48 MHz)
LPC_CT16B0->MR0 = 20870;
LPC_CT16B0->MCR = (0x3 << 0); // Interrupt and Reset on MR0
NVIC_EnableIRQ(TIMER_16_0_IRQn); // Enable the TIMER0 Interrupt
LPC_CT16B0->TCR = 1; // Enable TIMER0

P.S。也许使用“ Arduino语言”的示例也可能有所帮助。

1 个答案:

答案 0 :(得分:1)

LPC_SYSCON是一个指向SYSCON基地址的指针,我认为这是您MCU中的硬件模块。从基地址开始的数据结构在名为LPC_SYSCON_Type的头文件中定义良好。 LPC_SYSCON->SYSAHBCLKCTRL使用该基址和寄存器SYSAHBCLKCTRL的偏移量来计算SYSAHBCLKCTRL的物理地址,然后通过|= (1 << 7)设置位7(位7当然是AHB时钟使能位)。

相关问题