[N32G430] 重映射问题

[复制链接]
1096|4
 楼主| 春风知意 发表于 2023-11-22 14:02 | 显示全部楼层 |阅读模式
本帖最后由 春风知意 于 2023-11-22 14:24 编辑

按照官方例程我跑了CAN,例程里面有重映射时钟使能,请问这个重映射时钟使能是什么时候和条件要调用这个函数?我看到官方例程中spi,uart都没调用,不应该都是一样吗?感谢解答
static void can_gpio_init(void)
{
   GPIO_InitType GPIO_InitStructure;

   /* Initializes the GPIO */
   GPIO_Structure_Initialize(&GPIO_InitStructure);

   /* configure CAN pin */
   RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOB);
   RCC_APB2_Peripheral_Clock_Enable(RCC_APB2_PERIPH_AFIO);

   GPIO_InitStructure.Pin            = GPIO_PIN_6;
   GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
   GPIO_InitStructure.GPIO_Alternate = GPIO_AF11_CAN;
   GPIO_Peripheral_Initialize(GPIOB, &GPIO_InitStructure);

   GPIO_InitStructure.Pin             = GPIO_PIN_7;
   GPIO_InitStructure.GPIO_Alternate  = GPIO_AF11_CAN;
   GPIO_Peripheral_Initialize(GPIOB, &GPIO_InitStructure);
}

下面是spi的例程
void GPIO_Configuration(void)
{                              
    GPIO_InitType GPIO_InitStructure;

    GPIO_Structure_Initialize(&GPIO_InitStructure);
    /* Configure slave pins: NSS, SCK, MISO and MOSI */
    /* Confugure SPI pins as Input Floating */
    GPIO_InitStructure.Pin        = SPI_SLAVE_CLK_PIN | SPI_SLAVE_MOSI_PIN | SPI_SLAVE_MISO_PIN | SPI_SLAVE_NSS_PIN;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Alternate = SPI_SLAVE_GPIO_ALTERNATE;
    GPIO_Peripheral_Initialize(SPI_SLAVE_GPIO, &GPIO_InitStructure);

    /* Configure master pins: NSS, SCK, MISO and MOSI */
    /* Confugure SPI pins as Alternate Function Push Pull */
    GPIO_InitStructure.Pin        = SPI_MASTER_MOSI_PIN | SPI_MASTER_MISO_PIN | SPI_MASTER_NSS_PIN;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Slew_Rate = GPIO_SLEW_RATE_FAST;
    GPIO_InitStructure.GPIO_Alternate = SPI_MASTER_GPIO_ALTERNATE;
    GPIO_Peripheral_Initialize(SPI_MASTER_GPIO, &GPIO_InitStructure);
    /* If CLKPOL is HIGH, set SPI_SCK GPIO to GPIO_PULL_UP, otherwise set to GPIO_PULL_DOWN */
    GPIO_InitStructure.Pin            = SPI_MASTER_CLK_PIN;
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Slew_Rate = GPIO_SLEW_RATE_FAST;
    GPIO_InitStructure.GPIO_Pull      = GPIO_PULL_DOWN;
    GPIO_InitStructure.GPIO_Alternate = SPI_MASTER_GPIO_ALTERNATE;
    GPIO_Peripheral_Initialize(SPI_MASTER_GPIO, &GPIO_InitStructure);

}
void GPIO_Configuration(void)
{
    GPIO_InitType GPIO_InitStructure;

    /* Initialize GPIO_InitStructure */
    GPIO_Structure_Initialize(&GPIO_InitStructure);

    /* Configure USARTy Tx as alternate function push-pull */
    GPIO_InitStructure.Pin            = USARTy_TxPin;   
    GPIO_InitStructure.GPIO_Mode      = GPIO_MODE_AF_PP;
    GPIO_InitStructure.GPIO_Alternate = USARTy_Tx_GPIO_AF;
    GPIO_Peripheral_Initialize(USARTy_GPIO, &GPIO_InitStructure);

    /* Configure USARTz Tx as alternate function push-pull */
    GPIO_InitStructure.Pin            = USARTz_TxPin;
    GPIO_InitStructure.GPIO_Alternate = USARTz_Tx_GPIO_AF;
    GPIO_Peripheral_Initialize(USARTz_GPIO, &GPIO_InitStructure);

    /* Configure USARTy Rx as alternate function push-pull and pull-up */
    GPIO_InitStructure.Pin            = USARTy_RxPin;
    GPIO_InitStructure.GPIO_Pull      = GPIO_PULL_UP;
    GPIO_InitStructure.GPIO_Alternate = USARTy_Rx_GPIO_AF;
    GPIO_Peripheral_Initialize(USARTy_GPIO, &GPIO_InitStructure);   

    /* Configure USARTz Rx as alternate function push-pull and pull-up */
    GPIO_InitStructure.Pin            = USARTz_RxPin;
    GPIO_InitStructure.GPIO_Alternate = USARTz_Rx_GPIO_AF;
    GPIO_Peripheral_Initialize(USARTz_GPIO, &GPIO_InitStructure);   
}


豌豆爹 发表于 2023-11-22 15:20 | 显示全部楼层
重映射时钟使能是一个相对底层的功能,通常在需要进行特别时钟配置的情况下使用。对于SPI和UART等通用接口,通常不需要进行特别的时钟配置。
玄德 发表于 2023-11-22 21:22 | 显示全部楼层

重映射类似于一块矩阵开关电路,用到这块电路就必须打开它的时钟,否则它无法工作。
你说的那些没有打开时钟的应用,很可能用到的管脚恰恰就是默认连接好的,并不需要启动矩阵开关。

评论

好的,了解了,谢谢回复  发表于 2023-11-23 13:36
 楼主| 春风知意 发表于 2023-11-23 13:35 | 显示全部楼层
豌豆爹 发表于 2023-11-22 15:20
重映射时钟使能是一个相对底层的功能,通常在需要进行特别时钟配置的情况下使用。对于SPI和UART等通用接口 ...

好的,谢谢回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部