嵌入式开发者社区

标题: Board_initCfg中的BOARD_INIT_DEFAULT不是很理解. [打印本页]

作者: cl17726    时间: 2017-5-26 18:03
标题: Board_initCfg中的BOARD_INIT_DEFAULT不是很理解.
本帖最后由 cl17726 于 2017-5-26 18:14 编辑

我看工程里面是定义:

typedef uint32_t Board_initCfg;
#define BOARD_INIT_ALL                  (0xFFFFFFFFU)
#define BOARD_INIT_UNLOCK_MMR           (1 << 1U)
#define BOARD_INIT_PLL                  (1 << 2U)
#define BOARD_INIT_MODULE_CLOCK         (1 << 3U)
#define BOARD_INIT_DDR                  (1 << 4U)
#define BOARD_INIT_WATCHDOG_DISABLE     (1 << 5U)
#define BOARD_INIT_PINMUX_CONFIG        (1 << 6U)
#define BOARD_INIT_UART_STDIO           (1 << 7U)
#define BOARD_INIT_ICSS_PINMUX          (1 << 8U)
#define BOARD_INIT_ETH_PHY              (1 << 9U)
#define BOARD_INIT_ECC                  (1 << 10U)
#define BOARD_INIT_PLL_OPP_HIGH         (1 << 11U)
#define BOARD_INIT_PLL_OPP_OD           (1 << 12U)
#define BOARD_INIT_PLL_OPP_NOM          (1 << 13U)
#define BOARD_INIT_DEFAULT              BOARD_INIT_ALL


然后这跟板有关吗,这不是CPU相关吗,只要CPU型号相同就可以用这个配置,不是吗?

另外这些定义具体说明在哪里,像BOARD_INIT_PLL_OPP_HIGH和BOARD_INIT_PLL_OPP_NOM岂不是冲突,但是BOARD_INIT_DEFAULT也就是BOARD_INIT_ALL是全部定义,那么究竟PLL配置是怎样了?

我把GPIO_LedBlink_evmAM572x_armTestProject初始化换成BOARD_INIT_DEFAULT程序就飞了.

作者: 544864579    时间: 2017-5-27 14:55
Board_initCfg 作为标志位,在evmAM572x.c中的Board_init()函数会根据判断这个标准位去初始化不同的外设:
Board_STATUS Board_init(Board_initCfg cfg)
{
    Board_STATUS ret = BOARD_SOK;

    if (cfg & BOARD_INIT_UNLOCK_MMR)
        ret = Board_unlockMMR();
    if (ret != BOARD_SOK)
        return ret;

    if (cfg & BOARD_INIT_PLL)
        ret = Board_PLLInit(OPP_NOM);
    else if(cfg & BOARD_INIT_PLL_OPP_HIGH)
        ret = Board_PLLInit(OPP_HIGH);
    else if(cfg & BOARD_INIT_PLL_OPP_OD)
        ret = Board_PLLInit(OPP_OD);
    else if(cfg & BOARD_INIT_PLL_OPP_NOM)
        ret = Board_PLLInit(OPP_NOM);
    if (ret != BOARD_SOK)
        return ret;

    if (cfg & BOARD_INIT_MODULE_CLOCK)
        ret = Board_moduleClockInit();
    if (ret != BOARD_SOK)
        return ret;

    if (cfg & BOARD_INIT_PINMUX_CONFIG)
        ret = Board_pinmuxConfig();
    if (ret != BOARD_SOK)
        return ret;

    if (cfg & BOARD_INIT_DDR)
        ret = Board_DDR3Init();
    if (ret != BOARD_SOK)
        return ret;

    if (cfg & BOARD_INIT_WATCHDOG_DISABLE)
        ret = Board_watchdogDisable();
    if (ret != BOARD_SOK)
        return ret;

    if (cfg & BOARD_INIT_UART_STDIO)
        ret = Board_uartStdioInit();
    if (ret != BOARD_SOK)
        return ret;

    return ret;
}

作者: cl17726    时间: 2017-5-29 14:36
544864579 发表于 2017-5-27 14:55
Board_initCfg 作为标志位,在evmAM572x.c中的Board_init()函数会根据判断这个标准位去初始化不同的外设:
...

这个我也看到了,但是具体意义不明白.




欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4