一基本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波 | 勤奋的小青蛙相关推荐

  1. python3多进程 queue 取值_【整理】python多进程之间共享queue | 勤奋的小青蛙

    默认情况下,使用multiprocess.Queue()只是在两个进程之间进行通信,如下示例: import multiprocessing, time def task(args): count = ...

  2. R语言扩展包dplyr——数据清洗和整理

    R语言扩展包dplyr--数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

  3. c语言把一段编码注释,C语言编码规范——着重注意点整理

    C语言编码规范--着重注意点整理 发布时间:2018-05-26 21:50, 浏览次数:260 C语言编码规范--着重注意点整理 编码规范的目的: 保证不同背景和经历的开发同学可以良好的协同开发 保 ...

  4. c语言基础编程题山东科技大学,C语言练习题〔山东科技大学吐血整理〕.doc

    C语言练习题[山东科技大学吐血整理] 数学11-1 C语言平时训练题 1.算术基本运算 Description 计算两整数x和y(0 Input 输入只有一行. Output 输出为多行,按顺序每行输 ...

  5. C语言编码规范——着重注意点整理

    C语言编码规范--着重注意点整理 编码规范的目的: 保证不同背景和经历的开发同学可以良好的协同开发 保证组织级的开发技能和经验得以共享和传承 编程最难的是命名!因为其他的算法.数据结构都有据可循. 命 ...

  6. R语言中文社区2018年终文章整理(作者篇)

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...

  7. c语言仓库管理系统实验报告,C语言课程设计仓库管理系统(最新整理)

    <C语言课程设计仓库管理系统(最新整理)>由会员分享,可在线阅读,更多相关<C语言课程设计仓库管理系统(最新整理)(12页珍藏版)>请在人人文库网上搜索. 1.includeC ...

  8. C语言/C++学习路线图(2021整理)

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以 ...

  9. c语言定时器1khz占空比,STM32高级定时器TIM1产生两路互补的PWM波(带死区)

    测试环境:Keil 5.20.0.0 STM32F103RBT6 固件库版本:STM32F10x_StdPeriph_Lib_V3.5.0(2011) 本文使用TIM1的通道1,通道2,产生两路1kh ...

最新文章

  1. Latex中的列表环境[一]
  2. php exec和query,关于Go SQL中的Query、Exec和Prepare使用对比(附网络抓包)
  3. 剑指offer-调整数组顺序使奇数位于偶数前面
  4. RunTime技术总结
  5. boost::spirit模块演示 AST 生成的计算器示例,AST一旦创建就会被遍历
  6. .NET截取指定长度汉字超出部分以...代替
  7. 通用usb驱动libusb介绍和使用示例
  8. Python (schedule库)简单使用
  9. 数据中心生成器行业调研报告 - 市场现状分析与发展前景预测
  10. MySQL错误:The user specified as a definer (XXX@XXX) does not exist
  11. 网络高可用性99 999 9999 99999
  12. 【图像去噪】基于matlab GUI均值+中值+空间+高斯滤波图像去噪【含Matlab源码 763期】
  13. python爬虫项目报告需求分析_网络爬虫需求分析报告
  14. Win10双网卡上网冲突(内网、外网)
  15. 如何使用tcpdump来捕获TCP SYN,ACK和FIN包
  16. 带你玩转 3D 检测和分割(一):MMDetection3D 整体框架介绍
  17. ubuntu借助windows的网络共享上网
  18. 飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!
  19. 多御安全浏览安卓版升级尝鲜,新增下载管理功能
  20. Vim 自定义补全利器 Snippet

热门文章

  1. 支付宝开放平台API(集分宝接口新上线!)
  2. 如何使用支付宝api接入自己的网站
  3. cross-silo是什么?
  4. 30岁开始做国外LEAD联盟,想改变自己的命运和家庭条件
  5. 程序猿怎样哄女朋友开心的秘籍,定制给女朋友一个应用(生日礼物)
  6. 华为鸿蒙系统失败,华为鸿蒙OS系统被爆出BUG!花粉们却纷纷体验叫好:成鸿蒙系统特权?...
  7. 近七成企业不赚钱,汽车经销商如何跨越生死K线?
  8. 踏山河计算机音乐乐谱,天谕手游乐谱踏山河代码
  9. 还在找mac系统能玩的英雄联盟LoL?那么看这里!lol 美服汉化版为您带来!
  10. java oracle分页查询语句_Oracle分页查询语句的写法(转)