| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> stm32常见定时器---TIM定时及PWM输出 -> 正文阅读 |
|
[嵌入式]stm32常见定时器---TIM定时及PWM输出 |
STM32 常见定时器资源: 系统滴答定时器SysTick----提供时钟节拍做时间基准 看门狗定时器WatchDog----防止程序跑飞 实时时钟RTC 基本定时器:TIM7、TIM6 通用定时器:TIM2--TIM5----在通用定时器的基础的实现输出比较、输入捕获、PWM生成、单脉冲模式输出等使用最广。 高级定时器:TIM1、TIM8 这篇主讲TIM定时器的应用 高级控制定时器(TIM1和TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源,它们可以同步操作。 定时器的定时时间等于计数器的中断周期乘以中断的次数 STM32的通用定时器是一个通过可编程预分频器(Prescaler)驱动的16位自动重装主计数器(Counter Period)构成。可以对内部时钟或触发源以及外部时钟或触发源进行计数。 公式:定时时间=(Prescaler+1)*(Counter Period+1)/定时器时钟频率 例如要定时时间为0.1ms,可以设Prescaler=7199,Counter Period=999,(注Prescaler和Counter Period的值不是固定的)则: (7199+1)*(999+1)/72000000=0.1ms TIM在CUbeMX里的配置 【1】设置Clock Source时钟源 【2】设置Prescaler和Counter Period参数 【3】设置NVIC嵌套向量中断控制器 例:时钟信号72MHz,【1】利用TIM2实现间隔定时,每隔0.5秒将LED1的开关状态翻转。【2】利用TIM3实现间隔定时,每隔1秒将LED2的开关状态翻转。 代码如下(只给出主要部分):
PWM是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术 如图为向上计数:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 定时器重装载值为ARR,比较值CCRx ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? t时刻对计数器值和比较值进行比较 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果计数器值小于CCRx值,输出低电平 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果计数器值大于CCRx值,输出高电平? PWM的一个周期? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?定时器从0开始向上计数 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?当0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数...循环此过程 至此一个PWM周期完成 影响因素? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ARR :决定PWM周期(在时钟频率一定的情况下,当前为默认内部时钟CK_INT)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CCRx : 决定PWM占空比(高低电平所占整个周期比例) 向下计数则是从一个设定的数递减到零。 可参考:?https://www.cnblogs.com/brianblog/p/7117896.html 以stm32f103ve为例 在pwm控制呼吸灯时TIM选择的PWM通道对应引脚要与LED对应引脚用杜邦线连接 如用TIM8的CH1来控制LED1,需将标出两引脚连接,同理如果用TIM1控制LED1的话将相应引脚连接即可。
函数总结:
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:38:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |