| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM8S定时器学习总结 -> 正文阅读 |
|
[嵌入式]STM8S定时器学习总结 |
现在学了定时模式 又开始生产网络垃圾了 主要看你拿哪个定时器 高级定时器和通用计算频率的公式不一样(看手册 ) 高级定时器
通用定时器
根据时钟树 STM8S一般不外接晶振 使用内部HSI RS16Mhz 经过预分频器默认8分频 只剩下2Mhz 如需要超频可以修改 时钟分频寄存器(CLK_CKDIVR) 改变预分频系数 配置好时钟部分 就可以计算计数器的频率了 例:系统时钟不超频默认2Mhz PSCR分频因子可以配置为1 时钟2分频 fck_CNT = 2Mhz/2^1 = 1Mhz 这样计数器频率就成了1Mhz 周期为1us 如需定时1秒 ARR就可以设置为1000次 这样一个溢出周期就变成1ms 然后在中断中再用一个变量计数1000次就实现了1s定时
TIM2_CR1 使能计数器 (具体看手册) IER为使能更新中断?
TIM2_SR1_UIF为中断更新溢出标志位 由硬件置1 软件清零? 输出比较 (输出PWM波)为了兼容有些所需频率较高的场景 一般会重新设置预分频器?(CLK_CKDIVR) 改为16Mhz(图一可见详细) PSCR预分频器设置为1分频 计数器时钟为16Mhz? 然后设置输出比较模式 一下均使用通用定时器TIM2 CH1单通道输出? 配置输出模式 选择PWM1模式? 也就是说计数器CNT的值<CCR时为有效电平 >时为无效电平 (向上计数时)这一位由TIMx_CCMRa来配置 (a的取值为1~3) 还得使能输出比较预装载OC1PE? 接下来配置有效电平 由TIMx_CCERb来配置(b的取值为1~2)CCIP(位1) 模式为高电平0有效 使能输出CC1E 为1才能输出 ? 接下来是pwm的核心,频率以及占空比的设置: /* Set the Autoreload value */ ? ? /*TIM2 Frequency=16M/138=106k*/
最后使能一下计数器 TIMx_CR1 第0位? ? ?#代码样例
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
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 8:58:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |