[STM32F7] STM32F103 使用TIM3产生四路PWM

[复制链接]
1499|24
 楼主| 丢丢手绢666 发表于 2021-10-27 17:01 | 显示全部楼层
  1.    TIM_Cmd(TIM2,DISABLE);
  2.         //通过循环让灯闪烁
  3.     while (aa){
  4.         GPIO_SetBits(GPIOC,GPIO_Pin_3);
  5.         delay_ms(10);
  6.         GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  7.         delay_ms(10);
  8.         aa--;
  9.     }
  10. //使灯的状态为灭
  11. GPIO_SetBits(GPIOC,GPIO_Pin_3);
  12. TIM_Cmd(TIM2,ENABLE);
  13. }        
 楼主| 丢丢手绢666 发表于 2021-10-27 17:01 | 显示全部楼层
}

void delay_ms(u32 i)
{
u32 temp;
SysTick->LOAD=9000*i; //设置重装数值, 72MHZ时
SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源
SysTick->VAL=0; //清零计数器
do
{
temp=SysTick->CTRL; //读取当前倒计数值
}
while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达
SysTick->CTRL=0; //关闭计数器
SysTick->VAL=0; //清空计数器
}
 楼主| 丢丢手绢666 发表于 2021-10-27 17:02 | 显示全部楼层
在产生PWM时,如果输出引脚已经被使用,就要对引脚进行重映射,阅读《STM32中文参考手册2010》第119页可知:
76767617915841aeb7.png
 楼主| 丢丢手绢666 发表于 2021-10-27 17:02 | 显示全部楼层
对TIM3而言:

1、当没有重映射时,TIM3的四个通道CH1,CH2,CH3,CH4分别对应PA6,PA7,PB0,PB1
2、当部分重映射时,TIM3的四个通道CH1,CH2,CH3,CH4分别对应PB4,PB5,PB0,PB1
3、当完全重映射时,TIM3的四个通道CH1,CH2,CH3,CH4分别对应PC6,PC7,PC8,PC9
 楼主| 丢丢手绢666 发表于 2021-10-27 17:03 | 显示全部楼层
为了整齐,我们选择完全重映射,使用的函数是:

GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
如果想使用部分映射,参数用GPIO_PartialRemap_TIM3:

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部