新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2015-3-3
- 在线时间
- 4 小时
|
以下是我的程序:首先配置I/O口:
static void TIM3_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
/*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*GPIOB Configuration: TIM3 channel 3 and 4 as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
然后配置定时器:
static void TIM3_Mode_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
/* 定义占空比变量 */
u16 pwmaf = 800;
u16 pwmab = 0;
u16 pwmbf = 800;
u16 pwmbb = 0;
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 999; //
TIM_TimeBaseStructure.TIM_Prescaler = 7; //输出10KHzPWM
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; //
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 999; //设置通道1的占空比,A6口
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //
TIM_OC1Init(TIM3, &TIM_OCInitStructure); //
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
/* PWM1 Mode configuration: Channel2 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0; //设置通道2占空比为0,A7口
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
/* PWM1 Mode configuration: Channel3 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 800; //设置通道3输出占空比,B0口
TIM_OC3Init(TIM3, &TIM_OCInitStructure); //
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
/* PWM1 Mode configuration: Channel4 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0; //设置通道4输出占空比,B1口
TIM_OC4Init(TIM3, &TIM_OCInitStructure); //
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE); //
/* TIM3 enable counter */
TIM_Cmd(TIM3, ENABLE); //
}
A6、A7、B0输出占空比正常,但B1口输出始终为标准方波
请问是因为我哪里配置错了吗?谢谢
|
-
|