最近有新手问我,什么串口2 串口3 都是那个引脚 以及PWM配置那个引脚 通道选择哪一个、
先简单的描述一下
PWM
//设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
//设置该引脚为复用输出功能,输出 TIM1 CH1 的 PWM 脉冲
GPIOInitStructure.GPIOPin = GPIOPin8; //TIMC
如果不知道 想要使用其他的神费劲 只能上网抄别人的程序了
case 0:
// 通道0
/* ADC1 regular channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[0].Buff[AnalogChannel[0].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[0].ChCnt >= SampMax)
AnalogChannel[0].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 1:
// 通道1
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[1].Buff[AnalogChannel[1].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[1].ChCnt >= SampMax)
AnalogChannel[1].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 2:
// 通道4
/* ADC1 regular channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[2].Buff[AnalogChannel[2].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[2].ChCnt >= SampMax)
AnalogChannel[2].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 3:
// 通道5
/* ADC1 regular channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[3].Buff[AnalogChannel[3].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[3].ChCnt >= SampMax)
AnalogChannel[3].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 4:
// 通道6
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[4].Buff[AnalogChannel[4].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[4].ChCnt >= SampMax)
AnalogChannel[4].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 5:
// 通道7
/* ADC1 regular channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[5].Buff[AnalogChannel[5].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[5].ChCnt >= SampMax)
AnalogChannel[5].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 6:
// 通道8
/* ADC1 regular channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[6].Buff[AnalogChannel[6].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[6].ChCnt >= SampMax)
AnalogChannel[6].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
case 7:
// 通道9
/* ADC1 regular channel0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 1, ADC_SampleTime_13Cycles5);
/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
AnalogChannel[7].Buff[AnalogChannel[7].ChCnt++] = ADC1->DR; // 通道0
if(AnalogChannel[7].ChCnt >= SampMax)
AnalogChannel[7].ChCnt = 0;
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
break;
default:
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_13Cycles5);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); // 等待转换完成
temp = ADC1->DR; // 通道10
temp = temp;
这一切都在数据手册里 ,详细可以自己慢慢查看
在例如 ADC
再例如 DAC