OpenEdv-开源电子网

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

定时器用作计数器 求原子哥、大神们指点

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
发表于 2013-11-28 13:07:55 | 显示全部楼层 |阅读模式

使用tim2作为计数器,使用外部时钟源模式2, 配置在ETR下每1个上升沿计数一次的向上计数器,然后将计数器中的计数值放入GPIOB端口。
程序如下,调试发现无法实现,找不到问题,请原子哥、大神们指点,小弟十分感谢!

#include "stm32f10x_lib.h"   //包含了所有的头文件
void RCC_Configuration(void);
 void GPIO_Configuration(void);
 void TIM_Configuration(void);

//主程序--------------------

int main(void)
{
  u16 ReadValue;

   RCC_Configuration();    //使能外设时钟
   GPIO_Configuration();   //初始化GPIO管脚
  TIM_Configuration() ; //用作计数器
 while(1)
 {
 ReadValue=TIM2->CNT ;
 GPIOB->ODR=ReadValue ;
 }
}
//--------Tim2设置---------------------------
void TIM_Configuration(void)
{
  
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启定时器2时钟
 TIM_DeInit(TIM2);
 TIM_TimeBaseStructure.TIM_Period = 100;     
 TIM_TimeBaseStructure.TIM_Prescaler = 0; 
 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;   //设置时钟分割系数
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
 TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); 
//配置TIM2外部时钟模式2 外部触发预分频OFF 外部触发极性上升沿有效  外部触发滤波器值为0
 TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF ,TIM_ExtTRGPolarity_NonInverted, 0x0);
 TIM_SetCounter(TIM2, 0);清0计数器
  TIM_Cmd(TIM2,ENABLE);//使能TIM2
}
//----------GPIO设置--------------------------
void GPIO_Configuration(void) 
{
 GPIO_InitTypeDef GPIO_InitStructure; 
 GPIO_DeInit(GPIOA);    //初始化
 GPIO_DeInit(GPIOB);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE); // 使能外设时钟
                 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入  
 GPIO_Init(GPIOA,&GPIO_InitStructure);  

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;  
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    // 推挽输出
 GPIO_Init(GPIOB,&GPIO_InitStructure); 
//-------------设置时钟72mhz------------------------------
void RCC_Configuration(void)

 RCC_DeInit();    //初始化
   RCC_HSEConfig(RCC_HSE_ON);   //时钟使能
   while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);  //等待高速时钟就绪
  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  
     FLASH_SetLatency(FLASH_Latency_2);       
      RCC_HCLKConfig(RCC_SYSCLK_Div1);    
    RCC_PCLK2Config(RCC_HCLK_Div1);    
     RCC_PCLK1Config(RCC_HCLK_Div2);      
 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); ////使用锁相环输出72Mhz
    RCC_PLLCmd(ENABLE);        // Enable PLL
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  // Wait till PLL is ready
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     
    while(RCC_GetSYSCLKSource() != 0x08); 
}
-------------------------------------------------------
调试发现无法实现,找不到问题,请原子哥、大神们指点,小弟十分感谢!

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-28 16:07:25 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-28 16:56:52 | 显示全部楼层
恩恩,说的是,以后会多搜的,当然,之前看到公告了,所以在发之前,还是搜过了,不过下次认真多搜搜。谢谢
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-28 17:30:24 | 显示全部楼层
顺便再问一下,当然原子哥可以不予回复,初学者,水平太低,问一些很低级的问题。问:我使用的库函数版本是不是太低了,水平太低了
,void TIM5_Excnt_Init(u16 arr,u16 psc) 
#include "sys.h"
#include "led.h"
#include "tim1ti.h"
#include "delay.h"
#include "tim2.h"
以上还是首次见到,在库文件中,我没找到一个,原子哥可以不回复
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-28 23:13:40 | 显示全部楼层
你折代码就有问题.
include一般放在.C
文件的最开始的地方.
怎么搞了个函数的什么在前面?然后还没有哦;作为结束...
这编译,铁定报错.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-29 10:01:35 | 显示全部楼层
哦,发帖时没有发完整,完整的程序已经改好了,在前面。编译器确实没有任何的报错,但是一仿真,就没有用了,外部没有任何的输入,但定时器却不断的运行
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-11-26
在线时间
0 小时
 楼主| 发表于 2013-11-29 18:35:27 | 显示全部楼层
努力去找到问题所在
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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