打印
[N32G430]

重映射问题

[复制链接]
898|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 回复TA
好的,了解了,谢谢回复 
地板
春风知意|  楼主 | 2023-11-23 13:35 | 只看该作者
豌豆爹 发表于 2023-11-22 15:20
重映射时钟使能是一个相对底层的功能,通常在需要进行特别时钟配置的情况下使用。对于SPI和UART等通用接口 ...

好的,谢谢回复

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

41

帖子

0

粉丝