因为蓝桥杯板子led在PC8-15端口 所以选择用TIM3-CH3完全复用输出pwm达到呼吸灯的效果
pwm.c
#include"pwm.h"
#include"stm32f10x.h"
void tim3_pwm_init(unsigned int count,unsigned int prer)
{
GPIO_InitTypeDef GPIO_Init_c8pwm;
TIM_OCInitTypeDef TIM3_OC3Init;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInit_tim3;
RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
//³õʼ»¯GPIO ÉèÖø´ÓÃ
GPIO_Init_c8pwm.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init_c8pwm.GPIO_Pin=GPIO_Pin_8;
GPIO_Init_c8pwm.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_Init_c8pwm);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);
//ÉèÖòÎÊý
TIM_TimeBaseInit_tim3.TIM_Period=count;
TIM_TimeBaseInit_tim3.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit_tim3.TIM_Prescaler=prer;
TIM_TimeBaseInit_tim3.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInit_tim3);
//ÉèÖÃTIM_OCÊä³ö
TIM3_OC3Init.TIM_OCMode=TIM_OCMode_PWM2;
TIM3_OC3Init.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM3_OC3Init.TIM_OutputState=TIM_OutputState_Enable;
TIM_OC3Init(TIM3,&TIM3_OC3Init);
TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);
//ʹÄܶ¨Ê±Æ÷
TIM_Cmd(TIM3,ENABLE);
}
main.c
int main()
{
unsigned int LED0_pwm;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
led_init();
tim3_pwm_init(899,0);
while(1)
{
LED0_pwm++;
if(LED0_pwm>300) LED0_pwm=0;
TIM_SetCompare3(TIM3,LED0_pwm);
}
}
预想是LED1会由暗变亮反复但是结果不对 led8常亮
尝试使用TIM3-CH4使能LED2 失败 结果不变
刚刚开始学 我就想知道我错哪了