11458|13

15

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急急急,STM32F4 TIM3 ETR外部计数,计数器不计数,求助!!! [复制链接]

       PD6输出50K的波形,使用TIM3的ETR功能测量(PD2),将PD2于PD6连接,用示波器可以测得50K的波形,但是TIM3的计数器没有计数,一直为0!
?         
        //*****************************************************
                //***************************************************************
                //*************************************************       
        //将外部IO连到ETR
         
        //打开PD2  时钟  PD2 JP6
        RCC->AHB1ENR |= (RCC_AHB1ENR_GPIODEN);
       
        //使用复用功能AF2 TIME3 ETR  复用
        GPIOD->AFR[0] &=  (~(0xF<<8));       
        GPIOD->AFR[0] |=  (0x2 << 8);
       
        GPIOD->MODER &= (~(0x3 << 4));
        GPIOD->MODER |= (0x0 << 4);//0x2
        //推挽输入
        GPIOD->OTYPER &= (~(1 << 2));
        //输出速度 高速
        GPIOD->OSPEEDR &= ((~(0x3 << 4)));
        GPIOD->OSPEEDR |= (0x2 << 4);
        //悬浮
        GPIOD->PUPDR &= ((~(0x3 << 4)));
        GPIOD->PUPDR |= (0x0 << 4);
       
  //***********************************************
        //初始化时钟 40M 输入
          RCC->APB1ENR |= (RCC_APB1ENR_TIM3EN);

                //ETR设置
        //不需要滤波器
        temp = TIM3->SMCR;
        temp &= ~(TIM_SMCR_ETF);
        //预分频 0
        temp &= ~(TIM_SMCR_ETPS);
        //temp |= TIM_SMCR_ETF_1;
        //上升沿检测
        temp &= ~(TIM_SMCR_ETP);
        //外部时钟模式2
        temp |= TIM_SMCR_ECE;
  //外部触发输入
        // temp |= TIM_SMCR_TS;
        //从模式选择
        //temp &= ~TIM_SMCR_SMS;
//        temp |= TIM_SMCR_SMS;
       
         TIM3->SMCR = temp;
         temp = 0;
                //TIM3->EGR |= TIM_EGR_UG;
       
                        UART1_Printf("timer3 init  TIM3->SMCR %x \r\n", TIM3->SMCR);
                //***********************************************************
                         
        //禁止计数器
//        TIM3->CR1 &= ~(TIM_CR1_CEN);
        //手动清除计数器
        //TIM3->EGR |= TIM_EGR_UG;       
        //设置预分频器  1KHZ
        TIM3->PSC = 0;// 2分频
        //自动重载寄存器 100ms 上溢  ?
        TIM3->ARR = 0xffff;                            
         //计数初始为0
         TIM3->CNT = 0;
         //重复计数器
         TIM3->RCR =  (TIM3->RCR)&0xff;
        //TIM3_CR1
         temp = TIM3->CR1;
        //自动重装载
        temp |= TIM_CR1_ARPE;
        //多脉冲模式
        temp &= ~(TIM_CR1_OPM);
        //更新源设置
        temp |= TIM_CR1_URS;
        //更新禁止选择
        temp &= (~TIM_CR1_UDIS);
        //方向 上
        temp &= ~(TIM_CR1_DIR);
        // 采样频率 Tdts = Tck_int 40M
        temp &= ~(TIM_CR1_CKD);
        //中心对齐模式选择 单向
        temp &= ~ TIM_CR1_CMS;
       
        TIM3->CR1 = temp;
       
       
       
         //使能定时器6  100ms
        TIM3->CR1 |= (TIM_CR1_CEN);
       
                        UART1_Printf("timer3 init TIM3->CR1 %x \r\n",TIM3->CR1);

               
                UART1_Printf("timer3 init TIM3->CNT %d \r\n",TIM3->CNT);
                       


此帖出自stm32/stm8论坛

最新回复

我还没接触到这里呢,我建议你去我刚才给你的论坛发问一下。  详情 回复 发表于 2015-9-14 19:26
点赞 关注
 

回复
举报

4996

帖子

19

TA的资源

裸片初长成(初级)

沙发
 
STM32都有PWM输出和计数的例程,请参考。
此帖出自stm32/stm8论坛
 
个人签名我的博客
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
没有看到你对 PD6 的 GPIO 的设置啊?
此帖出自stm32/stm8论坛
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

4
 
PD6输出大概50K的波形,已经用示波器测量,是对的
//打开PD6  时钟  PD6 JP3
        RCC->AHB1ENR |= (RCC_AHB1ENR_GPIODEN);
       
        //使用复用功能AF2 TIME3 ETR  复用
        GPIOD->AFR[0] &=  (~(0xF<<24));       
        GPIOD->AFR[0] |=  (0x0 << 24);
       
        GPIOD->MODER &= (~ (0x3 << 12));
        GPIOD->MODER |= (0x01 << 12);//0x2
        //推挽输出
        GPIOD->OTYPER &= (~(1 << 6));
        //输出速度 高速
        GPIOD->OSPEEDR &= ((~(0x3 << 12)));
        GPIOD->OSPEEDR |= (0x2 << 12);
        //上拉
        GPIOD->PUPDR &= ((~(0x3 << 12)));
        GPIOD->PUPDR |= (0x1 << 12);
                //输出 1
        GPIOD->ODR = (GPIOD->ODR & (~(1 << 6)))|(1 << 6);               
此帖出自stm32/stm8论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

5
 
zhaojun_xf 发表于 2015-9-14 10:31
STM32都有PWM输出和计数的例程,请参考。

是参考例程写的!
此帖出自stm32/stm8论坛

点评

先调用库函数吧,不要用寄存器直接写。  详情 回复 发表于 2015-9-14 11:14
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

6
 
2459878559 发表于 2015-9-14 10:38
是参考例程写的!

先调用库函数吧,不要用寄存器直接写。
此帖出自stm32/stm8论坛
 
个人签名我的博客
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

7
 
zhaojun_xf 发表于 2015-9-14 11:14
先调用库函数吧,不要用寄存器直接写。

没有找到ETR外部计数的,只看到外部捕获的!
此帖出自stm32/stm8论坛
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

8
 
例程也是对GPIO的方式设置的浮空?上拉,下拉这些的。对他没有影响吗?还有如果您想用寄存器方式的话,我建议还是看用户手册中寄存器的顺序来配置,您这样会不会有点乱呢
此帖出自stm32/stm8论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

9
 
本帖最后由 2459878559 于 2015-9-14 16:04 编辑
C:\Users\lf\Desktop\123.png
我是参考这个写的!!!
此帖出自stm32/stm8论坛

点评

但是我看它的寄存器不止这些,因为我也处于初学,所以我觉得你有些问题可以到正点原子的论坛去看看。http://www.openedv.com/  详情 回复 发表于 2015-9-14 16:15
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

10
 
2459878559 发表于 2015-9-14 16:01
我是参考这个写的!!!

但是我看它的寄存器不止这些,因为我也处于初学,所以我觉得你有些问题可以到正点原子的论坛去看看。http://www.openedv.com/
此帖出自stm32/stm8论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

11
 
huaiqiao 发表于 2015-9-14 16:15
但是我看它的寄存器不止这些,因为我也处于初学,所以我觉得你有些问题可以到正点原子的论坛去看看。http ...

哥们帮忙看下呗,我是搞得头晕脑胀了!!!
此帖出自stm32/stm8论坛

点评

我还没接触到这里呢,我建议你去我刚才给你的论坛发问一下。  详情 回复 发表于 2015-9-14 19:26
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

12
 
2459878559 发表于 2015-9-14 19:12
哥们帮忙看下呗,我是搞得头晕脑胀了!!!

我还没接触到这里呢,我建议你去我刚才给你的论坛发问一下。
此帖出自stm32/stm8论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

13
 
     问题已经解决,在F1里 我看到ETR例程写的端口设置为悬浮,   但是f4需要设置为复用功能!
此帖出自stm32/stm8论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

14
 

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表