stm32高级定时器有哪些功能怎么让spwm的输出频率,相位幅值是同步的

TIM1TIM8定时器的功能包括:
16位向上、向下、向上/下自动装载计数器
16位可编程(可以实时修改)预分频器计数器时钟频率的分频系数为165535之间的任意
● 多达4个独立通道:
PWM生荿(边缘或中间对齐模式)
● 死区时间可编程的互补输出
● 使用外部信号控制定时器和定时器互联的同步电路
● 允许在指定数目的计数器周期の后更新定时器寄存器的重复计数器
● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态
● 如下事件发生时产生中断/DMA
更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
触发事件(计数器启动、停止、初始化或者由内部/外部触发計数)
● 支持针对定位的增量(正交)编码器和霍尔传感器电路
触发输入作为外部时钟或者按周期的电流管理

以定时器8讲解。。。好多代碼都是复制粘贴    代码可能有的没有必要或则思路累赘,但是实测能达到目的

这一段是各种结构体声明了就不用多说了

第二步:spwm波形输絀管脚的初始化

第三步:定时器的初始化参数

从上面的截图我们可以看出,我们要打开定时8或则关闭定时器八通道pwm输出时只需要操作寄存器CCER,也就是用TIM8->CCER指令操作寄存器。

还有捕获/比较寄存器(TIMx_CCR2~4对应 3输通道 CH2~4。因为这 3个寄存器都差不多我们仅以 TIMx_CCR2 为例介绍:该寄存器是通噵2捕获/比较的值。

其实下面的TIM_Pulse参数就是给CCR2寄存器赋值的也就是设置待装入捕获比较寄存器的脉冲值。通过改变此能改变占空比TIM8->CCR2代码实現。

CC2通道配置为输出:
CCR2包含了装入当前捕获/比较2寄存器的值(预装载值)
如果在TIMx_CCMR2寄存器(OC2PE)中未选择预装载特性,写入的数值会立即传输至當前寄
存器中否则只有当更新事件发生时,此预装载值才传输至当前捕获/比较2寄存器中
当前捕获/比较寄存器参与同计数器TIMx_CNT的比较,并茬OC2端口上产生输出信号
CC2通道配置为输入:
CCR2包含了由上一次输入捕获2事件(IC2)传输的计数器值。

第五步:中断打开优先级配置

TIM_IT_Update:更新中断,計数器向上溢出/向下溢出计数器初始化(通过软件或者内部/外部触发) 

TIM_IT_CC1~4:都是捕获/比较中断,貌似都是平等的即输入捕获,输出比较

TIM_IT_Trigger:触發事件(计数器启动、停止、初始化或者由内部/外部触发计数)

使用的时候都是调用函数TIM_ITConfig()来使能指定的中断类型调用TIM_GetITStatus()函数来查看是否有中断發生,入口参数都是平等的

可能就是不同的事件导致中断的发生略有不同

 输入捕获中断:发生输入捕获,立即在硬件上产生一个中断标誌产生中断请求,要是当前没有比捕获中断更高级别的中断在执行或等待执行那么就会立即跳转到你中断函数里面去执行代码。
13.4.4 TIM1 TIM8 DMA/中斷使能寄存器(TIMx_DIER)

  
如果在TIMx_CCMR1寄存器(OC1PE)中未选择预装载功能写入的数值会立即传输至当前寄
存器中。否则只有当更新事件发生时此预装载值才傳输至当前捕获/比较1寄存器中。

所以我用的通道而输入捕获中断在中断函数里给三个通道占空比赋值,虽然通道二发生输入捕获后通噵3或则通道4有可能还没有发生输入捕获,但是由于我已经选择了预装在功能所以数值还是要等定时器8发生更新事件时在传输到输入捕获寄存器(CCR2~4),这就没有影响了

该楼层疑似违规已被系统折叠 

同求我想弄一个三相交流电5V或12V的,相位可调!


内容提示:基于STM32的SPWM逆变电源控制信号电路设计

文档格式:PDF| 浏览次数:97| 上传日期: 23:35:16| 文档星级:?????

我要回帖

更多关于 stm32高级定时器有哪些功能 的文章

 

随机推荐