打印
[STM32F1]

对外部脉冲进行计数

[复制链接]
1118|43
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chuxh|  楼主 | 2022-10-9 21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问有谁使用过使STM32F140对外部脉冲进行计数,帮忙说一下方法呗.。。。

使用特权

评论回复
沙发
zhenykun| | 2022-10-9 22:04 | 只看该作者
计数最好使用计数器  这样比较简单  呵呵   这是个人的一点意见

使用特权

评论回复
板凳
xxrs| | 2022-10-9 22:06 | 只看该作者
我看到有人使用timer-A的外部时钟输入脚测脉冲,但具体不会操作,不知道有谁使用过这个功能

使用特权

评论回复
地板
zhenykun| | 2022-10-9 22:09 | 只看该作者
可以用定时器,输入设为外部输入就行了。

使用特权

评论回复
5
juventus9554| | 2022-10-9 22:13 | 只看该作者

P1SEL |= 0x01;        // P1.0  TACLK input
TACTL = TASSEL_0 + MC_2 + TAIE +ID_0;  // TACLK, contmode 开溢出中断

使用特权

评论回复
6
renyaq| | 2022-10-9 22:16 | 只看该作者
可以的 设置边沿检测 或者中断。

使用特权

评论回复
7
huangchui| | 2022-10-9 22:19 | 只看该作者
可以在中断函数里面进行计数。

使用特权

评论回复
8
tian111| | 2022-10-9 22:21 | 只看该作者
使用 timer-A ,timer-B 就是太费了,用了之后,就不能在干别的了。

使用特权

评论回复
9
chenho| | 2022-10-9 22:23 | 只看该作者
正点原子不是有写好的例程吗?可以参考啊

使用特权

评论回复
10
yszong| | 2022-10-9 22:26 | 只看该作者
有很多方法实现

使用特权

评论回复
11
dingy| | 2022-10-9 22:29 | 只看该作者
定时器、计数器、IO中断,都行

使用特权

评论回复
12
heweibig| | 2022-10-9 22:31 | 只看该作者
看脉冲频率了。

使用特权

评论回复
13
chuxh|  楼主 | 2022-10-9 22:35 | 只看该作者
用io口中断就可以呀

使用特权

评论回复
14
chenho| | 2022-10-9 22:41 | 只看该作者
如果频率太快的话 io口是反应不过来的

使用特权

评论回复
15
juventus9554| | 2022-10-13 18:33 | 只看该作者
如果频率不高 就用io口的边沿触发就行 不过要防抖

使用特权

评论回复
16
木木guainv| | 2022-11-8 09:50 | 只看该作者
可以使用电平进行计数  在这种方式下 要不停的轮询io口状态了

使用特权

评论回复
17
tpgf| | 2022-11-8 10:05 | 只看该作者
使用普通io口的高低电平的中断就可以达到计数的目的

使用特权

评论回复
18
磨砂| | 2022-11-8 10:18 | 只看该作者
使用定时器的外部捕捉模式就可以对脉冲进行计数

使用特权

评论回复
19
晓伍| | 2022-11-8 10:33 | 只看该作者
应该使用TIMX的ETR方式,我的理解每个定时器都有一路外部计数端口

使用特权

评论回复
20
八层楼| | 2022-11-8 11:08 | 只看该作者
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使用这一句时:使用系统时钟时 可以产生Update中断

  TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0); // 使用这一句时 :用etr做时钟 就没法中断

  /* TIM2 configuration */
  TIM_TimeBaseStructure.TIM_Period = 0xffee;   //     
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0000;      //分频系数(除数)
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    //计数模式
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0000;    //计数周期 参见手册
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  


  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

  TIM_Cmd(TIM2, ENABLE);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

粉丝