切换到宽版
  • 4031阅读
  • 8回复

[STM]STM8学习之——timer1输入捕获 [复制链接]

上一主题 下一主题
离线zeze10000
 

发帖
2858
M币
8559
专家
35
粉丝
112
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-06-19
timer1是stm8的几个最复杂的外设资源之一
与之相关的功能也很多,定时器是最简单的一种,还有输入捕获、输出比较、PWM等众多复杂的功能。
要把timer1相关资源学通透不是件容易的事,估计很多地方要反复多看即便才能明白。

由于他的定时器功能与timer4基本相同,仅是计数位数增加和分频系数更加灵活,所以今天就不做研究。
今天要学习的是简单的输入捕获。

先看看大体结构

PSC时钟经过分频变成计数时钟CNT
每来一个时钟脉冲16位计数器自增1,然后同自动重装载寄存器比较
当CNTR大于ARR时产生溢出,根据设置产生事件更新和中断,CNTR清零,重新计数
这个和timer4相同
不同的地方在于CK_PSC时钟的来源

看下图

可以看到timer1的CK_PSC时钟来源很丰富
今天的实验就是使用timer1对外部输入时钟进行捕获计数
今天我们就从TIM1_CH1这儿通道来捕获外部时钟信号。
根据结构框图,我们需要配置的寄存器有TIM1_CCMR1、TIM1_CCER1、TIM1_SMCR
通过配置这几个寄存器将外部时钟输入信号选通成CK_PSC时钟源。

其它的寄存器配置就和timer4相同了。

今天的实验就是通过CCO时钟输出作为时钟源,通过杜邦线将CCO时钟接到TIM1_CH1
stm8s105k4需要配置选项字节位AFR2启用PD0脚的时钟输出功能,再将PD0脚通过杜邦线连接到
定时器1的外部时钟输入引脚PC1。

最后通过在中断服务函数中改变LED状态来观察运行状态,当然用逻辑分析仪观察更方便。

这个是使用内部高速时钟8分频得到的2M时钟,再经过64分频输出
上方是输出时钟,下方是LED状态


这个是使用外部8M晶振作为主时钟源,CPU时钟不分频,时钟输出是CPU时钟64分频

最后附上实验程序代码
  1. //定时计数器1输入捕获
  2. #include<iostm8s105k4.h>
  3. #define LED PE_ODR_ODR5
  4. #pragma vector=TIM1_OVR_UIF_vector
  5. __interrupt void timer1()
  6. {
  7.   LED=!LED;
  8.   
  9.   TIM1_SR1=0;
  10. }
  11. void init()
  12. {
  13.   PC_DDR_DDR1=0; //输入模式
  14.   PC_CR1_C11=1;  //上拉输入
  15.   PC_CR2_C21=0;  //无中断
  16.   
  17.   PE_DDR_DDR5=1; //输出模式
  18.   PE_CR1_C15=1;  //推挽输出
  19.   PE_CR2_C25=0;  //低速
  20.   
  21.   PD_DDR_DDR0=1; //时钟输出引脚配置
  22.   PD_CR1_C10=1;
  23.   PD_CR2_C20=1;
  24.   
  25.   CLK_SWCR|=0x20; //时钟切换
  26.   CLK_SWR=0xb4; //外部晶振
  27.   CLK_CKDIVR=0x00;//不分频
  28.   
  29.   CLK_CCOR|=0x15; //打开时钟输出功能
  30.   
  31.   TIM1_CCMR1=0x00; //输入捕获模式,无滤波,不分频,CH1为输入
  32.   TIM1_CCER1=0x01; //上升沿有效,允许捕获
  33.   TIM1_SMCR=0x57;  //输入源滤波后的定时器输入1,外部时钟模式1
  34.   TIM1_PSCRH=TIM1_PSCRL=0; //输入信号不分频
  35.   TIM1_ARRH=0;     //16位重装载高位为0
  36.   TIM1_ARRL=8;    //16位重装载低位为8
  37.   TIM1_IER=0x01;   //开中断
  38.   TIM1_CR1=0x01;   //开计数
  39. }
  40. int main( void )
  41. {
  42.   init();
  43.   asm("rim");
  44.   while(1);
  45. }



THE END!



本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共2条打赏M币+9
66ok66 M币 +8 原創內容 2018-06-20
keye M币 +1 謝謝分享…………………… 2018-06-20
离线keye

发帖
1769
M币
5395
专家
3
粉丝
48
只看该作者 1楼 发表于: 2018-06-20
请登录后查看
离线66ok66

发帖
1356
M币
860
专家
10
粉丝
21
只看该作者 2楼 发表于: 2018-06-20
请登录后查看
离线触景情伤

发帖
3862
M币
28
专家
4
粉丝
70
只看该作者 3楼 发表于: 2018-06-20
离线2545889167

发帖
13268
M币
20754
专家
302
粉丝
4860
只看该作者 4楼 发表于: 2018-06-20
请登录后查看
离线yzx0201

发帖
1562
M币
3685
专家
2
粉丝
24
只看该作者 5楼 发表于: 2018-06-20
请登录后查看
离线zeze10000

发帖
2858
M币
8559
专家
35
粉丝
112
只看该作者 6楼 发表于: 2018-06-20
回 yzx0201 的帖子
请登录后查看
离线levifly

发帖
78
M币
202
专家
2
粉丝
3
只看该作者 7楼 发表于: 2018-06-22
请登录后查看
离线zeze10000

发帖
2858
M币
8559
专家
35
粉丝
112
只看该作者 8楼 发表于: 2018-06-22
回 levifly 的帖子
请登录后查看
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个