void LED_BIG_Init(void)
{
// 配置信号引脚 (PA1) 为 GPTIM2_CH1 复用模式
HAL_PIN_Set(PAD_PA00 + LED_BIG_PIN, GPTIM2_CH1, PIN_NOPULL, 1);
HAL_RCC_EnableModule(RCC_MOD_GPTIM2);
// ================= 定时器基础配置 =================
gpt_led_big.Instance = (GPT_TypeDef *)LED_BIG_TIM;
gpt_led_big.core = CORE_ID_HCPU;
gpt_led_big.Channel = HAL_GPT_ACTIVE_CHANNEL_CLEARED;
gpt_led_big.Init.Prescaler = LED_BIG_PSC; // PSC: 24MHz / 24 = 1MHz
gpt_led_big.Init.CounterMode = GPT_COUNTERMODE_UP;
gpt_led_big.Init.Period = LED_BIG_ARR; // ARR: 1MHz / 1000 = 1kHz
if (HAL_GPT_Base_Init(&gpt_led_big) != HAL_OK) {
rt_kprintf("[LED] GPT Base Init Failed!\n");
return;
}
GPT_ClockConfigTypeDef clock_config = {0};
clock_config.ClockSource = GPT_CLOCKSOURCE_INTERNAL;
if (HAL_GPT_ConfigClockSource(&gpt_led_big, &clock_config) != HAL_OK) {
rt_kprintf("[LED] GPT Clock Config Failed!\n");
return;
}
// ================= PWM 模式初始化 =================
if (HAL_GPT_PWM_Init(&gpt_led_big) != HAL_OK) {
rt_kprintf("[LED] GPT PWM Init Failed!\n");
return;
}
GPT_OC_InitTypeDef oc_config = {0};
oc_config.OCMode = GPT_OCMODE_PWM1;
Pulse = (ARR + 1) * LED_BIG_DUTY_CYCLE / 100
oc_config.Pulse = (uint32_t)((LED_BIG_ARR + 1) * LED_BIG_DUTY_CYCLE / 100);
oc_config.OCPolarity = GPT_OCPOLARITY_HIGH;
oc_config.OCFastMode = GPT_OCFAST_DISABLE;
if (HAL_GPT_PWM_ConfigChannel(&gpt_led_big, &oc_config, LED_BIG_TIM_CHANNEL) != HAL_OK) {
rt_kprintf("[LED] GPT Channel Config Failed!\n");
return;
}
if (HAL_GPT_PWM_Start(&gpt_led_big, LED_BIG_TIM_CHANNEL) != HAL_OK) {
rt_kprintf("[LED] GPT PWM Start Failed!\n");
return;
}
rt_kprintf("Simple PWM Driver Initialized (Freq: 1kHz, Duty: %d%%)\n", LED_BIG_DUTY_CYCLE);
}
同样的这个代码,我原来配置的LED_BIG_PIN为20(PA20)就是正常有波形,现在换成1(PA1)就发现示波器测不到波形了,想问一下是PA1不能配定时器2通道1吗,但是看数据手册又是可以的。