那问题来了,我们怎么打开某个外设的时钟呢??
我可以通过PMC的PMC Peripheral Clock Enable Register寄存器打开,这里分PMCPeripheral Clock Enable Register 0和PMCPeripheral Clock Enable Register 1,PMCPeripheral Clock Enable Register 0是管前32个外设的时钟源开关,PMCPeripheral Clock Enable Register 1管剩下外设的时钟源的来源,如下面手册的一段话,大意是要我们找对应外设的ID号: 然后可以通过PDF的查找功能找到这部分的详细资料,如下图我们可以查出UART1的外设ID号: 可以看出UART1是的ID号是45,这样我就可以直接对PMC_PCER1寄存器写入1 <<(45-32)也就是把PMC_PCER1(PMC Peripheral Clock Enable Register 1)的第13位置1,就是打开UART1的时钟源了。 串口这部分的寄存器的我就不多说了,大家可以自行去查E文手册。 现在我来理清下思路了: 使用串口时的步奏: (1)初始化系统时钟和外设的时钟。 (2)设置相关PIO口的复用为UART的TX和RX脚,关闭PIO功能。大家要注意的是但凡你使用到某个外设,外设涉及到的PIO管脚一定要把PIO功能关闭。可以通过ioport_disable_port(xxx,xxx)的库函数关闭PIO功能,或者直接对PIO_PDR写1;例如: ioport_disable_port(IOPORT_PIOA,(PIO_PA5C_URXD1 | PIO_PA6C_UTXD1));或者PIOA->PIO_PDR =(PIO_PA5C_URXD1 | PIO_PA6C_UTXD1);这两种写法一样的。 (3)设置UART的工作模式,波特率等 (4)实现用户功能。 关于波特率这里我要多补充几点: 设置波特率的是通过UART_BRGR(UART Baud Rate GeneratorRegister)波特率寄存器设定的。
|