OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4862|回复: 3

新手菜鸟,请教一下可以直接读取通用计数器的数值吗?

[复制链接]

8

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-5-15
在线时间
8 小时
发表于 2014-6-9 20:49:42 | 显示全部楼层 |阅读模式
5金钱
就比如说,我用IO口做外部中断的输入,然后想记录一个方波的脉冲宽度,就想用用计数器记录两次中断的时间之差,然后将计数器里的数值读取出来可以吗?
这是我的代码,劳烦高手指教一下
#include"sys.h"
#include"delay.h"
#include"usart.h"
#include"led.h"
#include"exti.h"
double frequency;
extern u8 t;
int main(void)
{
     u8 i=0;
    while(GPIOA->IDR&0X0001); //当PA0上检测到一个低电平时,开始进行捕获
    EXTIX_Init(0XFFFF,0);  //开启中断
    TIM2->CR1|=0x01; //使能定时器2计数器
    while(1)
     {
            if(t==2)
            {
                temp=TIM2->CNT; //获取当前的捕获值
                frequency=(double)8000000/temp;
                LED=1;
                i=1;
            }
            if(i==1)
            break;
      }
}

#include"exti.h"
#include"sys.h"
u8 t=0;
void EXTIX_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<0;//TIM2时钟使能
RCC->APB2ENR|=1<<2;  //使能PORTA时钟
Ex_NVIC_Config(GPIO_A,0,FTIR); //下降沿触发
MY_NVIC_Init(2,3,EXTI0_IRQn,2); //抢占2,子优先级3,组2
TIM2->ARR=arr; //设定计数器自动重装值
TIM2->SC=psc; //预分频器
TIM2->CCER|=1<<0; //CC1E=1 允许捕获计数器的值到捕获寄存器中
}
void EXTI0_IRQHandler(void)
{
    t++;
    EXTI->R=1<<0;   //清除LINE0上的中断标志位
}

最佳答案

查看完整内容[请看2#楼]

回复【3楼】whut-showming: --------------------------------- 1,是的,例程请看我们教程. 2,可以,但是不建议,就算你设置浮空,外部也必须加上下拉.否则不稳定. 3,不应该出现这种情况.你可以试试我们的例程.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-9 20:49:43 | 显示全部楼层
回复【3楼】whut-showming:
---------------------------------
1,是的,例程请看我们教程.
2,可以,但是不建议,就算你设置浮空,外部也必须加上下拉.否则不稳定.
3,不应该出现这种情况.你可以试试我们的例程.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-9 22:40:27 | 显示全部楼层
是可以,但是有更好的办法
用外部输入捕获模式,方法更好,更准确.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-5-15
在线时间
8 小时
 楼主| 发表于 2014-6-10 15:44:07 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我有几个问题一起了问了
1.就是利用定时器某个通道的输入捕获方式吗?通过配置上升沿下降沿中断来测量方波的脉宽吗?
2.采用输入捕获模式的的时候,那个定时器通道的引脚可以配置为浮空输入模式吗?我看教程上都是若先捕获上升沿就配置为下拉输入,若配置为下降沿就配置为上升输入,那可以配置成浮空输入吗?,如果配置为浮空输入那刚开始捕获时设置为下降沿捕获或者上升沿捕获是不是就是一样的了?
3.当我用输入捕获模式的时候,用示波器观察要捕获的信号波形,发现一到捕获的时候,波形就受影响,那请问一下,捕获引脚对要捕获的信号有没有影响呢?
我就是因为觉得可能有影响所以就想改成直接用IO口的外部中断方式了,然后想直接读计数器的数值。
原子哥,请帮问解惑一下,不胜感激。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-7 13:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表