初级会员

- 积分
- 140
- 金钱
- 140
- 注册时间
- 2015-9-26
- 在线时间
- 7 小时
|
3金钱
GPIO_InitTypeDef GPIO_InitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);//初始化GPIO
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5
//设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);//初始化GPIO
//TIM_OCInitStruct.TIM_OCIdleState=
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
//TIM_OCInitStruct.TIM_OCNIdleState=
// TIM_OCInitStruct.TIM_OCNPolarity=
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
//TIM_OCInitStruct.TIM_OutputNState=
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
//TIM_OCInitStruct.TIM_Pulse=
TIM_OC2Init(TIM3, &TIM_OCInitStruct);
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的预装载寄存器
//TIM_Cmd(TIM3,ENABLE);
TIM_OC3Init(TIM3, &TIM_OCInitStruct);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的预装载寄存器
TIM_Cmd(TIM3,ENABLE);
第一个问题:
这里用到了定时器3的第二和第三个通道,其中第二通道使用重映射到led灯上。第三个通道使用引脚PA6只需要复用就行
这个gpio的代码怎么写 我写的对吗?
第二个问题:
这个//TIM_OCInitStruct.TIM_OCNIdleState= //TIM_OCInitStruct.TIM_OutputNState= 这些带N的是用来做什么的 资料上没找到 具体是干什么用的
我要写个定时器双路输出 我这样写对吗?
如果能有好的帖子发个给我谢谢
菜鸟一只,望各位大神搭救。
|
最佳答案
查看完整内容[请看2#楼]
问题一:通道配置有错,PA6-TIM3_CH1,PB5-TIM3_CH2,另外PB5是要进行IO部分重映象配置的;
问题二:带N的是用来配置互补输出通道的,要高级定时器才有;
|