OpenEdv-开源电子网

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

为什么用TIM4可以计数PB6 和PB7,但是TIM2却不可以计数PA1 为什么

[复制链接]

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2017-9-21
在线时间
17 小时
发表于 2018-1-28 12:45:28 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 觉感123 于 2018-1-28 13:25 编辑

void TIM4_Init(void)
{
  TIM4_Mode_Config();
   
}


void TIM4_Mode_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_ICInitTypeDef TIM_ICInitStructure;      

    //PB6 ch1  A,PB7 ch2
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//使能TIM4时钟   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOB时钟
   
    GPIO_StructInit(&GPIO_InitStructure);//将GPIO_InitStruct中的参数按缺省值输入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;         
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//PA6 PA7浮空输入   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);                           

    NVIC_Config(2);

    TIM_DeInit(TIM4);
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = 2048*4;  //设定计数器重装值   TIMx_ARR = 2048*4
    TIM_TimeBaseStructure.TIM_Prescaler = 0; //TIM4时钟预分频值
    TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1 ;//设置时钟分割 T_dts = T_ck_int   
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数
    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);          //根据指定的参数初始化tim4
  

  TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);//使用编码器模式4,上升计数
    TIM_ICStructInit(&TIM_ICInitStructure);//将结构体中的内容缺省输入
   
    TIM_ICInitStructure.TIM_ICFilter = 6;  //选择输入比较滤波器
    TIM_ICInit(TIM4, &TIM_ICInitStructure);//将TIM_ICInitStructure中的指定参数初始化TIM4
   
  //    TIM_ARRPreloadConfig(TIM4, ENABLE);//使能预装载
    TIM_ClearFlag(TIM4, TIM_FLAG_Update);//清除TIM4的更新标志位
    TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);//运行更新中断
   
   
    //Reset counter
    TIM4->CNT = 0;//

    TIM_Cmd(TIM4, ENABLE);   //启动TIM4定时器

}





void TIM2_Init(void)
{
   void TIM2_NVIC_Config();
   
}


void TIM2_Mode_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_ICInitTypeDef TIM_ICInitStructure;      

    //
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能TIM2时钟   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能GPIOA时钟
   
    GPIO_StructInit(&GPIO_InitStructure);//将GPIO_InitStruct中的参数按缺省值输入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;         
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//PA1浮空输入   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);                           

    NVIC_Config(3);

    TIM_DeInit(TIM2);
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = 2048*4;  //设定计数器重装值   TIMx_ARR = 2048*4
    TIM_TimeBaseStructure.TIM_Prescaler = 0; //TIM4时钟预分频值
    TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1 ;//设置时钟分割 T_dts = T_ck_int   
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);          //根据指定的参数初始化tim4
  

  TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI2, TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);//使用编码器模式4,上升计数
    TIM_ICStructInit(&TIM_ICInitStructure);//将结构体中的内容缺省输入
   
    TIM_ICInitStructure.TIM_ICFilter = 6;  //选择输入比较滤波器
    TIM_ICInit(TIM2, &TIM_ICInitStructure);//将TIM_ICInitStructure中的指定参数初始化TIM4
   
  //    TIM_ARRPreloadConfig(TIM4, ENABLE);//使能预装载
    TIM_ClearFlag(TIM2, TIM_FLAG_Update);//清除TIM4的更新标志位
    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//运行更新中断
   
   
    //Reset counter
    TIM2->CNT = 0;//

    TIM_Cmd(TIM2, ENABLE);   //启动TIM4定时器

}



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-1-29 00:57:35 | 显示全部楼层
仿真,对比下寄存器配置差异吧,得学会自己找问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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