elephant00 发表于 2022-4-11 10:33

STM42F407对外部脉冲计数:定时器初始化

//对外部脉冲计数
//GPIOA0接1按键,按下为高电平,复用到tiM8的ETR(外部计数脉冲输入端)                              
// 定时器8对GPIOA0输入的脉冲计数
//////////////////////////////////////////////////////////////////////////////////         

//TIM8_ETR 计数初始化

void TIM8_ETR_Counter_Init(u16 arr,u16 psc )
{
      GPIO_InitTypeDef GPIO_InitStructure;
      TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
      
      
      RCC_APB2PeriphclockCmd(RCC_APB2Periph_TIM8,ENABLE);
      //TIM8时钟使能   
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);      
      //使能PORTA时钟      
      
      
      // GPIOA0 工作模式为复用
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;      
      //速度100MHz
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉
      GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
      
      GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM8);
   //PA0复用位定时器8
      
      //初始化定时器TIM8
      TIM_TimeBaseStructure.TIM_Prescaler=psc;//定时器分频
      TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
      //向上计数模式
      TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值
      TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
      
      TIM_TimeBaseInit(TIM8,&TIM_TimeBaseStructure);

      
      // 外部时钟配置初始化
          TIM_ITRxExternalClockConfig(TIM8,TIM_TS_ETRF);
    TIM_ETRClockMode2Config(TIM8,TIM_ExtTRGPSC_OFF,             TIM_ExtTRGPolarity_Inverted,0x00);
    TIM_SetCounter(TIM8, 0);
               
    TIM_ITConfig(TIM8,TIM_IT_Update,DISABLE);
//不允许更新中断   ,直接读计数值

          TIM_Cmd(TIM8, ENABLE);//使能TIM8               
      
}

在主程序,可以通过函数读计数值:TIM_GetCounter( TIM8); //读计数值

kiwis66 发表于 2022-4-11 14:04

会产生误差么

cr315 发表于 2022-4-13 09:37

同问
会产生误差么

Jacquetry 发表于 2022-10-5 21:26

误差应该不大,可以接收

Bblythe 发表于 2022-10-7 11:29


结构化模块化的程序设计的思想,使最基本的要求

Pulitzer 发表于 2022-10-7 14:28


CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制

万图 发表于 2023-6-1 07:27


每次代码提交的时候都会生成一条提交记录

Uriah 发表于 2023-6-1 08:30


清除与电镀动作都会在化学过程中完成

帛灿灿 发表于 2023-6-1 10:26


如果已经找到正确的值,继续测试一个值根本没有意义。

Bblythe 发表于 2023-6-1 11:29


切割完了第四个字符之后,再依次扫描剩下的空间,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始并依次扫描直到所扫描的这一竖上的所有点的灰度值全为0时认为是字符的结束。

周半梅 发表于 2023-6-1 13:25


通常用发光二极管LED代替小灯

Pulitzer 发表于 2023-6-1 14:28


累加寄存器存储运行的数据和运算后的数据。

周半梅 发表于 2023-6-1 15:31


确定好硬件原理图,硬件布线,最后才是软件的开发

童雨竹 发表于 2023-6-1 16:24


断优先级有冲突导致UART-RX的正常接收

Wordsworth 发表于 2023-6-1 17:27


流编辑器,是一个使用简单紧凑的编程语言来解析和转换文本超强实用程序。

Clyde011 发表于 2023-6-1 18:30


ART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择
页: [1]
查看完整版本: STM42F407对外部脉冲计数:定时器初始化