學(xué)習(xí)開源項(xiàng)目CH32V003輸出PWM驅(qū)動(dòng)WS2812中,作者開發(fā)是TSSOP20,而我只有SOP8,使用重映射功能將PC2映射為TIM2,下載驗(yàn)證失敗,PC2沒有PWM輸出,不知道問題出自哪里。
關(guān)鍵部分代碼:
void TIM2_PWMOut_Init(u16 arr, u16 psc, u16 ccp)
{
? ? GPIO_InitTypeDef? ? ? ? GPIO_InitStructure = {0};
? ? TIM_OCInitTypeDef? ? ? ?TIM_OCInitStructure = {0};
? ? TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure = {0};
? ? // 啟用 GPIOD 和 TIM2 的時(shí)鐘
? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);
? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
? ? // 重映射 TIM2 到 GPIO
? ? GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE);
? ? // 配置 GPIO 引腳
? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 設(shè)為推挽復(fù)用輸出
? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
? ? GPIO_Init(GPIOD, &GPIO_InitStructure);
? ? // 定時(shí)器基礎(chǔ)設(shè)置
? ? TIM_TimeBaseInitStructure.TIM_Period = arr; // 設(shè)置計(jì)數(shù)周期
? ? TIM_TimeBaseInitStructure.TIM_Prescaler = psc; // 設(shè)置預(yù)分頻
? ? TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
? ? TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
? ? TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
? ? // 輸出比較配置
? ? TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
? ? TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
? ? TIM_OCInitStructure.TIM_Pulse = ccp; // 設(shè)置占空比
? ? TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
? ? TIM_OC2Init(TIM2, &TIM_OCInitStructure);
? ? // 啟動(dòng)定時(shí)器
? ? TIM_Cmd(TIM2, ENABLE);
}
開源項(xiàng)目:WS2812.zip