- 12
- 0
- 约2.85千字
- 约 6页
- 2016-11-04 发布于重庆
- 举报
STM8输入捕获(网上)
[原]STM8输入捕获
2014-9-4阅读324 评论0
最近在用STM8的过程中需要用到一个频率检测的功能,还好STM8S207的定时器中自带有输入捕获功能,之前还想着用定时器计数方式来实现的,但既然人家提供了该功能,那就试试吧,由于硬件里面接的是PC1引脚就只看了Timer1,其他的定时器应该也是类似的,看了资料之后发现STM8的输入捕获其实与STC12C5A60S2中的PCA捕获模式很类似,但是看资料没有后者清晰易懂。。。
在捕获模式中,基本上只用到了读进程,在STM8中有一个影子寄存器,但对于我们来说是看不到的,我们仅操作预装载寄存器即可。而且需要注意的是无论是计数器还是捕获/比较寄存器都是先读/写高8位,后读/写低8位数据。
在文档中给出了一个输入捕获模式的流程
按着这个流程来就可以完成我们的输入捕获
文档中首先提到将TIM1_CCMR1寄存器的CC1S位写01,将端口配置为输入,但在TIM1_CCMR1的寄存器中有说明CC1S位的更改需在通道关闭时(TIM1_CCER1寄存器的CC1E=0)才可写入,
因此在配置中先将TIM1_CCER1寄存器的CC1E位写0,然后将TIM1_CCMR1的CC1S位写01,
TIM1_CCER1 = (unsigned char)~0x01;//清零TIM1_CCER1中的CC1E位,之后才可配置TIM1_CCMR1
TIM1_CCMR1 = 0x01;//配置TIM1_CCMR1中的CC1S位为1,CC1通道配置为输入,IC1映射到TI1FP1上
//无滤波器、无预分频器(捕获输入口上检测到的每一个边沿都触发一次捕获)
TIM1_CCMR1寄存器有两种功能,分别对应捕获模式和比较模式,只需要捕获模式即可
滤波器是用来避免频率波动的直接写0即可,无滤波器,分频器我们也写00不用分频器,当然也可以使用分频器,提高准确率。
接着是设置触发方式,我们选择上升沿触发
TIM1_CCER1 = (unsigned char)~0x02;//上升沿或者高电平触发
最后使能捕获功能,设置TIM1_CCER1寄存器的CC1E位=1,由于我们采用中断方式因此也将TIM1_IER寄存器的CC1IE位置1,允许中断请求。
完整的初始化代码如下
void signal_capture_Init(void)
{
TIM1_CNTRH = 0x00;//清零计数器高8位
TIM1_CNTRL = 0x00;//清零计数器低8位
TIM1_PSCRH = 0x00;//计数器时钟分频高8位
TIM1_PSCRL = 0x10;//计数器时钟分频低8位16分频
TIM1_CCER1 = (unsigned char)~0x01;//清零TIM1_CCER1中的CC1E位,之后才可配置TIM1_CCMR1
TIM1_CCMR1 = 0x01;//配置TIM1_CCMR1中的CC1S位为1,CC1通道配置为输入,IC1映射到TI1FP1上
//无滤波器、无预分频器(捕获输入口上检测到的每一个边沿都触发一次捕获)
TIM1_CCER1 = (unsigned char)~0x02;//上升沿或者高电平触发 TIM1_IER |= 0x02;//CC1IE=1,使能捕获/比较1中断
TIM1_CCER1 |= 0x01;//捕获使能
TIM1_CR1 |= 0x01;//使能定时/计数器
}
当发生一个输入捕获时,计数器的值被传送到TIM1_CCR1寄存器中,计时器的时钟源在程序中我们设置为16分频
分频过后计数器的频率为1MHz,这里采用分频主要是避免计数器溢出,这样同时也降低了精度,同时设置计数器的初值为0,计数器默认计数方式是向上计数,计到最大值后又从0开始计数,
中断处理代码如下
@far @interrupt void signal_capture_irq (void)
{
if(TIM1_SR10x02)
{
TIM1_SR1 = (unsigned char)~0x02;//清除CC1IF标志
if(vsync_cap_data_old == 0x00)
{//第一次捕获中断来临
vsync_cap_data_old = TIM1_CCR1H;//先读取高8位数据
vsync_cap_data_old = (unsigned int)(vsync_cap_data_old8) + TIM1_CCR1L;//再读取低8位数据
}
else
{
//第二次捕获中断来临
vsync_cap_data_new = TIM1_CCR1H;//先读取高8位数据
vsync_cap_data_new = (unsign
您可能关注的文档
- oo知识点.docx
- Oracle数据库体系结构图.doc
- oracle数据库升级迁移实施参考方案.doc
- NX作图题.doc
- ORACLE基本概念及操作.doc
- oracle数据库参数设置技术手册.doc
- Oracle数据库参数优化和调整参数主要有以下内容.doc
- Oracle神谕翻译.docx
- Oracle数据库系统加固规范.doc
- Nutanix设备初始化安装文档.docx
- 2026中国农业科学院农业信息研究所科技情报分析与评估创新团队博士后研究人员招收1人备考题库附参考答.docx
- 2026中共济南市委党校(济南行政学院)引进博士研究生10人备考题库带答案详解.docx
- 2026中国矿业大学沐乐院士领衔城乡发展与绿色转型研究中心(URGT)特聘教授招聘1人备考题库(江苏.docx
- 2026中共通榆县委巡察工作领导小组办公室选调事业编制人员1人备考题库(吉林)含答案详解(精练).docx
- 2026中国中医科学院针灸研究所面向社会招聘5人备考题库附答案详解(精练).docx
- 2026中信银行博士后研究人员招聘备考题库带答案详解(轻巧夺冠).docx
- 2026中医药广东省实验室诚聘科研、管理、工程技术、产业发展各领域英才117人备考题库及答案详解(必.docx
- 2026中国地质调查局长沙自然资源综合调查中心招聘36人备考题库附参考答案详解(能力提升).docx
- 2026中共济南市委党校(济南行政学院)引进博士研究生10人备考题库附参考答案详解(b卷).docx
- 2026中国医学科学院医药生物技术研究所社会招聘18人备考题库及参考答案详解1套.docx
原创力文档

文档评论(0)