OpenEdv-开源电子网

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

TIM3外部时钟模式2困惑

[复制链接]

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-20
在线时间
0 小时
发表于 2013-8-7 08:50:33 | 显示全部楼层 |阅读模式
先前在论坛找到了相关参考资料,实现了定时器外部时钟模式1的测频,整体效果还不错,达到了1HZ到20M的频率范围。
在相关数据手册上找到了设置的步骤,于是模仿着开始利用类似的模式2实现同样的功能,但效果一直没用出来。
在此贴出我的部分代码,与参考手册相关设置截图。希望各路大侠能伸出你们的援助之手。

main部分:
while(1)
TIM3->CR1 |= 1 << 0;
delay_ms(1000);
TIM3->CR1 &= ~(1<<0); 
fre = count+TIM2->CNT;
DisplayNumber(fre);
count=0;
TIM3->CNT=0;
}

定时器部分:
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//溢出中断
{
count+=65536;
}   
TIM3->SR&=~(1<<0);//清除中断标志位

void Timer3_Init(void)
{
//???????¨?±?÷?±??
RCC->APB1RSTR |= 1 << 1;     //定时器3复位
RCC->APB1RSTR &= ~(1<<1);    
RCC->APB1ENR |= 1 << 1;       //定时器3时钟开启
TIM3->SMCR|=1<<14;           //使能外部时钟模式2
TIM3->SMCR&=0<<15;         //?外部触发极性
TIM3->SMCR&=(0<<8&0<<9&0<<10&0<<11); //无滤波器
TIM3->SMCR&=(0<<12&0<<13);            //关闭预分频
RCC->APB2ENR|=1<<5;         //配置PD2为浮空输入,引脚速度50M
GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000700;
// GPIOD->ODR|=0<<0;

TIM3->ARR=65535;                          //自动重装值
TIM3->SC=0;                                 //不分频
TIM3->DIER|=1<<0;                         //允许更新中断
TIM3->DIER|=1<<6;                         //允许触发中断    
TIM3->CR1|=0x01;                          //使能定时器3
        MY_NVIC_Init(1,3,TIM3_IRQChannel,2);      //抢占1,子优先级3,组2
}




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-9-19
在线时间
0 小时
发表于 2014-9-4 22:00:20 | 显示全部楼层
GPIOD->CRL|=0X00000700;
这句话把PD2配置成50MHZ的通用开漏输出模式了,本来这个引脚应该是输入模式啊
回复 支持 1 反对 0

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-20
在线时间
0 小时
 楼主| 发表于 2013-8-7 08:52:29 | 显示全部楼层
PD2接或不接外部时钟信号,显示结果差不多为72M。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-8-7 10:23:28 | 显示全部楼层
你这两句话的任何一句:
TIM3->SMCR&=(0<<8&0<<9&0<<10&0<<11); //无滤波器
TIM3->SMCR&=(0<<12&0<<13);            //关闭预分频
把整个SMCR都给清零了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-20
在线时间
0 小时
 楼主| 发表于 2013-8-7 10:38:32 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我最初觉得默认值就是我想要的设置值0,压根就没写那两句,但是现象显示仍然是“72M”,我才加上了自认为在相应位置零的设置语句。
原子哥,似乎问题不在这里,我直接注释掉,还是一样。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-8-7 10:47:15 | 显示全部楼层
TIM3->SMCR&=0<<15;           //?外部触发极性
这句也不对.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-20
在线时间
0 小时
 楼主| 发表于 2013-8-7 11:09:57 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
经过原子哥的提示,我从中发现自己的一个毛病。关于相应位置零的设置,应该是:  &= ~(1<<n),n表示相应位数。
谢谢原子哥的帮助。
这三句设置均为0的语句,我注释掉了,初始显示为零了,但接了外部信号源,结果还是0,好像并没有工作。>
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-8-7 12:56:49 | 显示全部楼层
ETR引脚是不是要设置成复用功能?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-20
在线时间
0 小时
 楼主| 发表于 2013-8-7 19:55:01 | 显示全部楼层
回复【7楼】正点原子:
------------------------------
不是,数据书册上的设置,还有其他的一些小设置,我都是参考过来的。
但就是出不来结果,对于新手,真不知如何是好。
尽管觉得“没头没脑”的问,有点怪怪的,但目前只有这办法了......
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2022-6-27
在线时间
0 小时
发表于 2022-6-27 22:57:45 | 显示全部楼层
遇到相似的问题, 帮顶
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 19:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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