目前这个模块的逻辑是初始化 TIM2 的通道 1, 产生一个 PWM 波形,输出引脚是PA0,然后通过下面这个SetCompare1的函数,可以调节CCR1寄存器的值,从而控制PWM的占空比,但是目前PWM的频率,是在初始化里写好了的,是固定的,运行时调节不方便,所以我们在最后再加一个函数,用来便捷地调节PWM频率。 调节PWM频率函数的编写 ...
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1); void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2); void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3); void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4); 函数讲解:这四个函数是用来单独更改CCR寄...
2. 初始化定时器参数,设置自动重装值,分频系数,计数方式等。 voidTIM_TimeBaseInit(TIM_TypeDef*TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); 1. 第一个参数是确定是哪个定时器,这个比较容易理解。 第二个参数是定时器初始化参数结构体指针,结构体类型为TIM_TimeBaseInitTypeDef,一共有五个成员变量。
AF_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//不同点,用的是PA1口的通道2GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);TIM_Cmd(TIM2,ENABLE);}voidPWM_SetCompare2(uint16_tCompare){//不同点,改为compare2TIM_SetCompare2(TIM2,Compare);//不同点,改为com...
1:时钟信号输入引脚 当使用外部时钟模式2的时候,时钟信号来自于定时器的特定输入通道TIMx_ETR,只有1个。 2:外部触发极性 来自ETR引脚输入的信号可以选择为上升沿或者下降沿有效,具体的由TIMx_SMCR的位ETP配置。 3:外部触发预分频器 由于ETRP的信号的频率不能超过TIMx_CLK(180M)的1/4,当触发信号的频率很高的...
当预分频器的参数从1变到2时,计数器的时序图 缓冲寄存器 如果我们在一个计数器计数到一半时改变了分频系数,就会导致这个周期的前后部分的频率不一样。 虽然这样做一般不会有什么太大影响,但是STM32的定时器比较严谨,设计了缓冲寄存器,这样当我们在计数寄存器记到一半的时候改变分频系数,这个变化不会立刻生效,而是会...
PWM 有一些常规的参数。一段高电平一段低电平合起来的一段,就是一个高低电平变换的周期,记为T_S,其倒数1/T_S就称为 PWM 波形的频率。这段周期中高电平的时间段记为T_{ON},余下低电平的时间段记为T_{OFF},定义占空比为T_{ON}/T_S,即高电平时段在一周期内的占比。还有分辨率被定义为占空比变化步距...
当使用外部时钟模式1的时候,时钟信号来自于定时器的输入通道,总共有4个,分别为TI1/2/3/4,即TIMx_CH1/2/3/4。具体使用哪一路信号,由TIM_CCMRx的位CCxS[1:0]配置,其中CCMR1控制TI1/2,CCMR2控制TI3/4。 ②:滤波器 如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对信...
1. 通用定时器的输出比较部分电路/高级定时器的第四个通道的输出比较电路 计数器(cnt): 计数功能:通用定时器的计数器是输出比较通道的基础,它不断对输入的时钟信号进行计数。计数的方式可以根据需求设置为向上计数、向下计数或向上 / 向下计数模式。例如在向上计数模式下,计数器从 0 开始,每个时钟周期增加 1,直到...
当使用外部时钟模式1时,触发源有两个,一个是滤波后的定时器输入1(TI1FP1)和滤波后的定时器输入2(TI2FP2),具体的由TIMxSMCR的位TS[2:0]配置。 ⑤:从模式选择 选定了触发源信号后,最后我们需把信号连接到TRGI引脚,让触发信号成为外部时钟模式1的输入,最终等于CK_PSC,然后驱动计数器CNT计数。具体的配置TIMx...