- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE19
项目6、利用计数器实现工件计数显示和打包控制
项目总目标
看懂STM32内部定时器的计数路径;
掌握利用外部时钟模式1、外部时钟模式2以及更新中断实现脉冲计数的软硬件设计方法。
具体工作任务
利用STM32单片机的外部时钟模式1外部时钟模式2,实现生产线工件计数显示与控制任务。
图6.0.1生产线工件计数显示器示意图
任务6.1利用外部时钟模式1实现生产线工件计数显示
一、任务目标
任务目标:初步掌握用外部时钟模式1和TIMx_CH引脚,实现脉冲计数的方法。
具体工作任务:利用STM32单片机的外部时钟模式1和TIMx_CH引脚,进行生产线工件检测,要求每过一个工件,计数值加1并显示,满100个自动清0,并重新开始计数。
二、学习与实践
讨论与发言
请结合项目4和项目5,谈一谈本任务的设计思路。
请阅读以下资料并按照指示的工作顺序完成任务。
(二)通用定时器的结构再认识
1、外部时钟模式1路径
图6.1.1通用定时器的TIMx_CH1和TIMx_CH2的外部时钟模式1路径
在项目5中,我们已经使用过内部时钟模式(InternalClockMode)实现定时控制和PWM输出。本任务中我们将使用外部时钟模式1(ExternalTriggerClockMode1)实现对传感器输入的脉冲进行计数。
从图6.1.1可以看出,内部时钟模式下,控制器的输入脉冲来自CK_INT,也就是TIMxCLK;外部时钟模式1情况下,控制器的脉冲则来自TRGI(TriggerInput,触发输入)。
在项目5中,我们曾使用TIMxCH1~TIMx_CH4引脚做PWM输出。这四个引脚被表达在图6.1.1的右侧,作为OC1~OC4的输出引脚。但你一定很早就注意到在图的左侧,也有四个同名的引脚TIMxCH1~TIMx_CH4。将引脚画在左侧,代表做输入,做TI1~TI4的输入引脚(TriggerInput)。本任务中我们只研究TI1和TI2。
要实现工件计数任务,可将光电传感器输入的脉冲接在TIMx_CH1或TIMx_CH2引脚上。
通过编程,可以使输入脉冲信号按照如下三条路径进入CNT计数器:
路径1:TIMx_CH1→TI1→TI1FP1→TRGI→CK_PSC→CK_CNT
路径2:TIMx_CH1→TI1→TI1F_ED→TRC→TRGI→CK_PSC→CK_CNT
路径3:TIMx_CH2→TI2→TI2FP2→TRGI→CK_PSC→CK_CNT
当然,从图6.1.1可以看出,外部时钟模式1即TRGI的来源不止这三条,本任务中我们只研究这三条。在这三种情况下,计数脉冲来自外部引脚,CNT计数器对外部脉冲(而不是内部脉冲CK_CNT)进行计数。通过读取计数值,就可以知道来了多少个脉冲;通过计数值与ARR值的比较结果,就可以知道输入脉冲是否达到了预定的数量,这就是TIM进行外部脉冲计数的原理。
2、计数过程
如图6.1.1,来自TIMx_CH1和TIMx_CH2引脚的外部脉冲经过了多路开关、输入滤波/边沿检测、控制器、PSC预分频器被送入CNT计数器。计数过程中还使用到ARR寄存器。关于控制器、PSC预分频器、ARR等设备的作用在项目5中我们已经学习过,这里只看多路开关、输入滤波和边沿检测电路。
多路开关
多路开关常常具有多个输入和1个输出。输出来自哪个输入取决于编程设置。例如可以通过编程设置TI1来自TIMx_CH1还是来自异或门。也可以设置TRC信号来自ITR或TI1F_ED。
(2)输入滤波
功能:输入滤波器用于滤掉叠加在输入信号中的干扰。过滤掉干扰信号后的理想波形如图6.1.2所示。
图6.1.2过滤掉干扰后的理想波形
设定值:滤波系数可编程设定,允许范围是0~15。
滤波系数=0,不滤波;滤波系数=15,滤波能力最强。
滤波系数不同,滤掉干扰信号的频率范围不同。本项目暂不考虑滤波系数的选择方法,将滤波系数设为0。
(3)边沿检测
功能:边沿检测用于决定是对输入信号的上升沿还是下降沿进行检测,可编程设定。例如希望输入信号每来一个上升沿进行计数,就应将其设置为上升沿触发。
图6.1.3设置为上升沿触发、加计数、PSC不分频、ARR=3
图6.1.4设置为下降沿触发、加计数、PSC不分频、ARR=3
如图6.1.3所示,如果指定对输入信号的上升沿进行检测,并且PSC不分频、加计数模式、ARR=3,则输入引脚上每来1个上升沿,经定时器时钟CK_INT同步后,CK_CNT输出1个脉冲,计数值加1;计数值加到4自动重装为0;重装时,发出更新中断请求。
如图6.1.4所示,如果指定对输入信号的下降沿进行检测,其它不变,则输入引脚上每来1个下降沿,计数值加1;计数值加到4自动重装为0,同时发出更新中断请求。
C
您可能关注的文档
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目1 利用GPIO和位操作实现温度报警.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目2 利用SysTick实现温度报警与控制.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目3 利用按键查询实现参数设定及显示.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目5 利用定时器实现直流电动机PWM调速.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目6 利用计数器实现工件计数显示和打包控制.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目7 利用DAC实现LED亮度控制.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目8 利用ADC实现土壤湿度控制.pptx
- 单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 课件 项目9 利用UART实现LED灯控制.pptx
- 【魔镜洞察】2024年五大行业流行趋势报告.pdf
- 人工智能 大规模预训练模型总体技术要求及评估方法(征求意见稿).docx
文档评论(0)