关于SysCtlPeripheralEnable函数的问题



At power-up, all peripherals are disabled; they must be enabled in order to operate or respond to register reads/writes.

很多例程都没有看到用这个函数。至少GPIO都没有用到。是不是系统初始化的时候都要设置一下?

  • 所有外设使用前都需要使用类似的语句如    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    否则系统会进入错误中断。

    你可能没有注意到。

  • GPIO或者外围的设置应该在SysCtlPeripheralEnable前吧?中断的设置在后?

  • 强调:配置外设前需要使能此外设(SysCtlPeripheralEnable)。无论是设置IO还是中断。

  • 所有的外设包括GPIO在使用之前必须使用SysCtlPeripheralEnable()使能它。

    这个操作需要5个时钟周期,期间尝试对其操作对导致总线错误。

       /*使能ADC外设*/

       SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);

    /*使能GPIOA*/

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    /*使能UART0*/

    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

    比如初始化串口:

    static ULONG BSP_UART_Init(void)

    {

       SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

       GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

       GPIODirModeSet(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_DIR_MODE_HW);

       /*初始化串口通讯参数*/

       UARTConfigSetExpClk(g_ulConPort, SysCtlClockGet(), BOARD_UART_BAUDRATE,

                           (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |

                            UART_CONFIG_PAR_NONE));

       UARTEnable(g_ulConPort);

       return SYS_NO_ERROR;

    }