[其他ST产品] STM42F407对外部脉冲计数:定时器初始化

[复制链接]
 楼主| elephant00 发表于 2022-4-11 10:33 | 显示全部楼层 |阅读模式
//对外部脉冲计数
//  GPIOA0接1按键,按下为高电平,复用到tiM8的ETR(外部计数脉冲输入端)                              
// 定时器8对GPIOA0输入的脉冲计数
//////////////////////////////////////////////////////////////////////////////////         

//TIM8_ETR 计数初始化

void TIM8_ETR_Counter_Init(u16 arr,u16 psc )
{
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_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时钟,只有开启和关闭的问题,不存在其它时钟源选择
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1030

主题

3864

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部