6-3 江协科技STM32输出比较

输出比较简介

输出比较功能主要是用来输出PWM波形的,PWM波形是驱动电机的

捕获/比较寄存器

捕获/比较寄存器是输入捕获和输出比较共用的

  • 当使用输入捕获时,它就是捕获寄存器,若使用输出比较时,就是比较寄存器
  • 当使用输出比较时,这块电路会比较CNT和CCR的值
    • CNT计数自增,CCR是给定一个值
    • 当CNT大于CCR,小于CCR,或者等于CCR时,这里的输出就会对应的置1,0,1,0。然后就可以输出一个电平不断跳变的PWM波形了

高级定时器和通用定时器,都有四个输出比较的通道,同时输出四路PWM波形

  • 根据图可以看出,四个通道有各自的CCR寄存器,但是共用一个CNT计数器
  • 高级定时器,还有死区生成和互补输出的功能,主要是用来驱动三相无刷电机

PWM简介

定时器中的通用比较是用来输出PWM波形的

  • 是一个数字输出信号,也是由高低电平组成的
  • 可以使用PWM波形,等效的实现一个模拟信号,不断让LED点亮熄灭,然后让这个频率足够大时,LED灯就不会闪烁了,而是会出现一个中等亮度,然后调整点亮和熄灭的时间比例时,就可以让LED呈现出不同的亮度级别
    • 对于电机来说也是,如果给定的频率给电机通电断电,那么电机的速度就可以维持在一个中等速度
  • 从第一个图中,可以看出,PWD是可以等效于虚线的脉冲模拟信号的
  • 频率:Ts就是代表一个高低电平变换周期的时间,然后周期的导数就是时间
  • 占空比:就是Ton/Ts,Ton就是高电平的时间
  • 分辨率,是占空比变化的步距,看占空比按照1%增加,那么分辨率就是1%,可以理解为精度。

定时器的输出比较模块怎么输出比较波形的

高级定时器输出比较通道

通用定时器输出比较电路,通道1

左边是CNT和CCR比较的结果,最后由TIM_CH1输出到GPIO引脚上

  • 输出模式通过比较的结果,输出高低信号oc1ref
    • 然后ref信号可以映射到主模式的TRGO输出上去
    • 其实最多的输出还是走下面这一路
  • 如果输入为0,那么信号就不反转,进去什么样子,出去还是什么颜值高i
  • 如果输出为1,那么信号就会有一个非门取反,就是高低电平反转的信号
  • 总的来说,就是要不不变,要不反转电路
  • 然后走到输出失能电路,看是否要输出到OC1

输出模式控制器

这个模式是根据下面的寄存器进行控制的

  • 有效电平,就是高电平
  • 无效电平就是低电平
  • 电平翻转,就是一会高电平,一会低电平,适合输出连续变化的波形

PWM模式1和PWM2是主要使用的模式

PWM基本结构

外设设备

明天细看一下这个外设设备原理

### 科技STM32 HAL库使用教程文档下载 对于科技STM32的工程,在现有情况下并没有集成HAL库,这意味着任何希望利用HAL库特性的开发者需要自行添加这些资源[^1]。 为了获取并应用科技STM32的相关HAL库资料和支持: #### 获取固件包 访问官方或其他可靠渠道提供的固件包链接来获得必要的驱动程序和中间件组件。这一步骤至关重要,因为这是构建基于HAL库项目的基础。 #### 利用在线平台资源 可以参考成电应电科发布的视频教程,该系列涵盖了如何入门STM32开发环境配置以及基本操作指南,包括但不限于设置CubeMX工具、初始化硬件抽象层(HAL)库等内容[^2]。 #### 移植过程中的注意事项 当考虑将特定功能模块(如OLED显示)迁移到采用HAL库的新环境中时,需注意原有代码结构的变化。例如,在处理GPIO接口调用方面,应当依据新的命名约定调整源码;同时确保所有外设配置均通过STM32CubeMX完成,从而简化后续编程工作量并提高兼容性[^3]。 #### 学习路径建议 如果仅关注某些特定主题的学习(比如PWM信号生成),则可以根据个人需求挑选相应章节深入研究,并借助配套的教学材料加深理解。此外,鼓励社区成员共同参与完善更多高级特性方面的记录[^4]。 ```python # 示例:在Python中模拟简单的PWM输出控制逻辑 import time def pwm_output(pin, duty_cycle): """Simulate PWM output on a given pin with specified duty cycle.""" while True: # High level duration based on duty cycle percentage high_time = 0.01 * duty_cycle / 100 low_time = 0.01 - high_time set_pin_high(pin) time.sleep(high_time) set_pin_low(pin) time.sleep(low_time) def set_pin_high(pin): print(f"Set {pin} HIGH") def set_pin_low(pin): print(f"Set {pin} LOW") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值