这块板子可以插usb直接下载,同时可作为daplink调试使用非常方便
简写一下定时器1 pwm输出的代码
首先是配置定时器
void TIM1_Configure(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
/* Compute the value to be set in ARR regiter to generate signal frequency at 100 Khz */
uint32_t TimerPeriod = (TIM_GetTIMxClock(TIM1) / 100000 ) - 1;
/* Compute CCR1 value to generate a duty cycle at 80% for channel 1 */
uint32_t Channel1Pulse = ((uint32_t)800 * (TimerPeriod - 1)) / 1000;
/* Compute CCR2 value to generate a duty cycle at 40% for channel 2 */
uint32_t Channel2Pulse = ((uint32_t)400 * (TimerPeriod - 1)) / 1000;
/* Compute CCR3 value to generate a duty cycle at 25% for channel 3 */
uint32_t Channel3Pulse = ((uint32_t)250 * (TimerPeriod - 1)) / 1000;
RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM1, ENABLE);
TIM_TimeBaseStructInit(&TIM_TimeBaseStruct);
TIM_TimeBaseStruct.TIM_Prescaler = 0;
TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStruct.TIM_Period = TimerPeriod;
TIM_TimeBaseStruct.TIM_ClockDivision = TIM_CKD_Div1;
TIM_TimeBaseStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStruct);
TIM_OCStructInit(&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse = 0;
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStruct.TIM_Pulse = Channel1Pulse;
TIM_OC1Init(TIM1, &TIM_OCInitStruct);
TIM_OCInitStruct.TIM_Pulse = Channel2Pulse;
TIM_OC2Init(TIM1, &TIM_OCInitStruct);
TIM_OCInitStruct.TIM_Pulse = Channel3Pulse;
TIM_OC3Init(TIM1, &TIM_OCInitStruct);
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_2); /* TIM1_CH1 */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_1); /* TIM1_CH2 */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_4); /* TIM1_CH3 */
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
TIM_Cmd(TIM1, ENABLE);
TIM_CtrlPWMOutputs(TIM1, ENABLE);
}
然后是配置pwm功能
void TIM1_PWM_Output_Sample(void)
{
printf("\r\nTest %s", __FUNCTION__);
TIM1_Configure();
while (1)
{
PLATFORM_LED_Toggle(LED1);
PLATFORM_DelayMS(100);
}
}

