打印

GD32的时钟旁路模式和OSCOUT引脚重映射模式

[复制链接]
2138|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李小川希比|  楼主 | 2023-1-6 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开启GD32的时钟旁路模式,再打开OSCOUT引脚重映射模式,即PD1脚映射到该OSCOUT引脚。程序无法执行,且智能下载一次,第二次下载需要双击两次复位按键。但如果我使用内部高速时钟就PD1脚就可以成功映射到OSCOUT上,程序正常型。环境:keil5.37
芯片:GD32F105RCT6 64脚
库:   HAL库

希望懂的朋友解答一下。谢谢!
void GpioInit(void)
{
          __HAL_RCC_GPIOC_CLK_ENABLE();
    __HAL_AFIO_REMAP_PD01_ENABLE();
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_1, GPIO_PIN_RESET);  //OUT12_PIN=H_Level   控制EN12脚  2# 反馈信号
}//PD1引脚初始化



void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
    RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

    /** Initializes the CPU, AHB and APB busses clocks
    */
//外部高速时钟:程序不能执行
//    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
//    RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
//    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
//    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
//    RCC_OscInitStruct.Prediv1Source = RCC_PREDIV1_SOURCE_HSE;
//    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
//    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
//    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
//    RCC_OscInitStruct.PLL2.PLL2State = RCC_PLL_NONE;
               
//内部高速时钟:程序正常运行       
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
    RCC_OscInitStruct.PLL2.PLL2State = RCC_PLL_NONE;

    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
        Error_Handler();
    }
    /** Initializes the CPU, AHB and APB busses clocks
    */
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                                  |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
    {
        Error_Handler();
    }
    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
    PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV8;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    {
        Error_Handler();
    }
    /** Configure the Systick interrupt time
    */
    __HAL_RCC_PLLI2S_ENABLE();
}



使用特权

评论回复
沙发
zcy5530| | 2024-8-19 10:06 | 只看该作者
同问,调试时必应要开启  RCU_CTL |= RCU_CTL_HXTALEN;//RCU_CTL_HXTALBPS  RCU_CTL_HXTALEN  外部高速时钟使能,RCU_CTL |= RCU_CTL_HXTALBPS 只开旁路时钟使能,无法达到时钟稳定导致程序卡住在等待时钟。同时出现调试工具无法连接的情况。猜测原因是没有时钟导致,请官方给一个标准旁路时钟配置

使用特权

评论回复
板凳
王派oo| | 2024-9-30 13:36 | 只看该作者
如果我使用内部高速时钟就PD1脚就可以成功映射到

使用特权

评论回复
地板
申小林一号| | 2024-9-30 14:15 | 只看该作者
OSC还能映射?

使用特权

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

本版积分规则

15

主题

84

帖子

2

粉丝