c语言tim1-smcr是什么意思,【整理】STM8使用TIM1测量PWM波 | 勤奋的小青蛙
一基本TIM1测量PWM波形原理
根据上图所示测量PWM的基本思想如下:
每个上升沿开始计数,监测到下降沿时记录下当前值为高电平时间,再检测到一个下降沿记录下当前值为周期,同时清零计数器开始测量下个周期。
二TIM1 的硬件结构
1 信号如何输入的
打开手册 翻到 17.5.2 输入模块
如图61,输入部分对相应的TIx输入信号采样,并产生一个滤波后的信号TIxF。然后,一个带极性选择的边缘监测器产生一个信号(TIxFPx),它可以作为触发模式控制器的输入触发或者作为捕获控制。该信号通过预分频进入捕获寄存器(ICxPS)。
根据该图和说明了解到和PWM测量相关的信息
1) TIM1有四个外部IO引脚可以输入信号 TIM1_CHx
2) 我们所关注的边沿检测是通过中间的边缘监测器检测出来的
3) 一个输入信号的上升沿 下降沿信号(TI1FP1,TI1FP2)可以配置到不同的通道上
那么我们就可以将一个引脚输入的PWM信号的上升沿和下降沿分别送入两个通道捕获。
2触发
如果是用的普通的计时器例如古董51的话,计时器清零的步骤就可以在上升沿中断的时候手动清零,不过STM8 的TIM1有个复位触发模式很适用:
计数器开始依据内部时钟计数,然后正常计数直到TI1出现一个上升沿;此时,计数器被清零然后从0重新开始计数。同时,触发标志(TIM1_SR1寄存器的TIF位)被置位,如果使能了中断(TIM1_IER寄存器的TIE位),则产生一个中断请求。 下图显示当自动重装载寄存器TIMx_ARR=0x36时的动作。在TI1上升沿和计数器的实际复位之间的延时取决于TI1输入端的重同步电路。
三 寄存器
1配置信号输入路径
点击手册目录 从TIM1寄存器描述的目录中找 输入捕获相关的寄存器。
这里发现有4个CCMRx正好和框图中四个TIM输入通道对应上了。通过介绍了解 位1:0是用来控制信号输入路径的。
我的实验板上信号输入的引脚是TH2,那么就该把TH2分成两路分别连接到TIM1的两个通道上(IC1,IC2)
TIM1->CCMR1 |=0x02;// ch1到ti2fp1
TIM1->CCMR2 |=0x01;// ch1到ti2fp1
2设置捕获极性
信号已经连到IC1 IC2了,那么下一步就该对IC1 IC2进行配置了。顺着目录往下看跟捕获相关的寄存器还有CCERx
通过阅读描述了解该为可控制ICx的捕获边沿极性和使能。
实验中的配置如下
TIM1->CCER1 |= 0x13;//使能输入捕获ti2fp1 ti2fp2 ti2fp1下降沿捕获 ti2fp2上升沿捕获
3触发模式
从模式控制寄存器SMCR中可选择复位模式和 触发源
TIM1->SMCR |=0X64;//选源触发源 ti2fp2 触发方式 复位模式
最后使能下中断配置就大功搞成咯
TIM1->IER |=0x06;//使能中断ch1 ch2
四 测试程序 STVD
将PWM波注入CH2引脚。在中断返回前设置断点,然后进行仿真,
将IC2Value,IC1Value;放入watch窗口观察。
void TIME1_INIT(void)
{
TIM1_DeInit();
//时基单元
//时钟触发控制器
TIM1->SMCR |=0X64;//选源触发源 ti2fp2 和触发方式 复位
//捕获 比较
TIM1->CCMR1 |=0x02;// ch1到ti2fp1
TIM1->CCMR2 |=0x01;// ch1到ti2fp1
TIM1->CCER1 |= 0x13;//使能输入捕获ti2fp1 ti2fp2 ti2fp1下降升沿 ti2fp2上升沿
//中断
TIM1->IER |=0x06;//使能中断ch1 ch2
TIM1_Cmd(ENABLE);
}
void main(void)
{
TIME1_INIT(); // 定时器1 输入捕获初始化
enableInterrupts(); // 开总中断
while(1);
}
中断函数
extern unsigned int IC2Value,IC1Value;
@near @interrupt void TIM1_CAP_COM_IRQHandler (void)
{
if(TIM1_GetITStatus(TIM1_IT_CC1))
{
IC1Value=TIM1_GetCapture1(); //读取高电平时间
TIM1_ClearITPendingBit(TIM1_IT_CC1);
}
if(TIM1_GetITStatus(TIM1_IT_CC2))
{
TIM1_ClearITPendingBit(TIM1_IT_CC2);
IC2Value=TIM1_GetCapture2(); //读取周期
}
return;
}
文章的脚注信息由WordPress的wp-posturl插件自动生成
|2|left
打赏
微信扫一扫,打赏作者吧~
c语言tim1-smcr是什么意思,【整理】STM8使用TIM1测量PWM波 | 勤奋的小青蛙相关推荐
- python3多进程 queue 取值_【整理】python多进程之间共享queue | 勤奋的小青蛙
默认情况下,使用multiprocess.Queue()只是在两个进程之间进行通信,如下示例: import multiprocessing, time def task(args): count = ...
- R语言扩展包dplyr——数据清洗和整理
R语言扩展包dplyr--数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报 分类: R Programming(11) ...
- c语言把一段编码注释,C语言编码规范——着重注意点整理
C语言编码规范--着重注意点整理 发布时间:2018-05-26 21:50, 浏览次数:260 C语言编码规范--着重注意点整理 编码规范的目的: 保证不同背景和经历的开发同学可以良好的协同开发 保 ...
- c语言基础编程题山东科技大学,C语言练习题〔山东科技大学吐血整理〕.doc
C语言练习题[山东科技大学吐血整理] 数学11-1 C语言平时训练题 1.算术基本运算 Description 计算两整数x和y(0 Input 输入只有一行. Output 输出为多行,按顺序每行输 ...
- C语言编码规范——着重注意点整理
C语言编码规范--着重注意点整理 编码规范的目的: 保证不同背景和经历的开发同学可以良好的协同开发 保证组织级的开发技能和经验得以共享和传承 编程最难的是命名!因为其他的算法.数据结构都有据可循. 命 ...
- R语言中文社区2018年终文章整理(作者篇)
欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...
- c语言仓库管理系统实验报告,C语言课程设计仓库管理系统(最新整理)
<C语言课程设计仓库管理系统(最新整理)>由会员分享,可在线阅读,更多相关<C语言课程设计仓库管理系统(最新整理)(12页珍藏版)>请在人人文库网上搜索. 1.includeC ...
- C语言/C++学习路线图(2021整理)
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以 ...
- c语言定时器1khz占空比,STM32高级定时器TIM1产生两路互补的PWM波(带死区)
测试环境:Keil 5.20.0.0 STM32F103RBT6 固件库版本:STM32F10x_StdPeriph_Lib_V3.5.0(2011) 本文使用TIM1的通道1,通道2,产生两路1kh ...
最新文章
- Latex中的列表环境[一]
- php exec和query,关于Go SQL中的Query、Exec和Prepare使用对比(附网络抓包)
- 剑指offer-调整数组顺序使奇数位于偶数前面
- RunTime技术总结
- boost::spirit模块演示 AST 生成的计算器示例,AST一旦创建就会被遍历
- .NET截取指定长度汉字超出部分以...代替
- 通用usb驱动libusb介绍和使用示例
- Python (schedule库)简单使用
- 数据中心生成器行业调研报告 - 市场现状分析与发展前景预测
- MySQL错误:The user specified as a definer (XXX@XXX) does not exist
- 网络高可用性99 999 9999 99999
- 【图像去噪】基于matlab GUI均值+中值+空间+高斯滤波图像去噪【含Matlab源码 763期】
- python爬虫项目报告需求分析_网络爬虫需求分析报告
- Win10双网卡上网冲突(内网、外网)
- 如何使用tcpdump来捕获TCP SYN,ACK和FIN包
- 带你玩转 3D 检测和分割(一):MMDetection3D 整体框架介绍
- ubuntu借助windows的网络共享上网
- 飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!
- 多御安全浏览安卓版升级尝鲜,新增下载管理功能
- Vim 自定义补全利器 Snippet
热门文章
- 支付宝开放平台API(集分宝接口新上线!)
- 如何使用支付宝api接入自己的网站
- cross-silo是什么?
- 30岁开始做国外LEAD联盟,想改变自己的命运和家庭条件
- 程序猿怎样哄女朋友开心的秘籍,定制给女朋友一个应用(生日礼物)
- 华为鸿蒙系统失败,华为鸿蒙OS系统被爆出BUG!花粉们却纷纷体验叫好:成鸿蒙系统特权?...
- 近七成企业不赚钱,汽车经销商如何跨越生死K线?
- 踏山河计算机音乐乐谱,天谕手游乐谱踏山河代码
- 还在找mac系统能玩的英雄联盟LoL?那么看这里!lol 美服汉化版为您带来!
- java oracle分页查询语句_Oracle分页查询语句的写法(转)