o0pingu0o 发表于 2020-4-12 15:28

请问HC32F003/005的高级定时器TIM4/5/6怎么实现普通定时计数?

请问HC32F003/005的高级定时器TIM4/5/6怎么实现普通定时计数?

zhugjbest 发表于 2020-4-13 11:50

原厂有提供官方例程,可以在这里找
【STEP1】打开【我的电脑】 ;
【STEP2】在地址栏输入地址 ftp://HdscCustomer:HdscGuest2019!@ftp.hdsc.com.cn/ 即可直接访问


华恒电子 发表于 2020-4-13 13:32

这个我客户遇到过,后面调好了 加QQ:3284494788 对接技术支持

o0pingu0o 发表于 2020-4-13 13:56

zhugjbest 发表于 2020-4-13 11:50
原厂有提供官方例程,可以在这里找
【STEP1】打开【我的电脑】 ;
【STEP2】在地址栏输入地址 ftp://HdscCu ...

这里面没有,别用发了这个了

o0pingu0o 发表于 2020-4-13 13:58

华恒电子 发表于 2020-4-13 13:32
这个我客户遇到过,后面调好了 加QQ:3284494788 对接技术支持

能发上来么?

martinhu 发表于 2020-4-13 15:06

zhugjbest 发表于 2020-4-13 11:50
原厂有提供官方例程,可以在这里找
【STEP1】打开【我的电脑】 ;
【STEP2】在地址栏输入地址 ftp://HdscCu ...

这里的adt的compare out的例子,把输出的CHA和CHB的引脚不要配置,PCONR的输出配置也不要,只留周期的配置,就是普通定时器,计数规则就是从0计数到ARR然后溢出,产生上溢或者下溢中断(三角波模式由计数方向决定,如果计数方向向上,则从0到ARR,产生上溢中断,中断使用OVF中断,反之亦然)。如果要在定时器运行中改周期,那么设置PARAR和PBRAR,并且使用周期的换成传送。如果不用改周期,只要设置PARAR就可以。

o0pingu0o 发表于 2020-4-14 08:08

martinhu 发表于 2020-4-13 15:06
这里的adt的compare out的例子,把输出的CHA和CHB的引脚不要配置,PCONR的输出配置也不要,只留周期的配 ...

多谢,已经实现了。{:smile:}

陌路独白 发表于 2021-1-26 10:55

本帖最后由 陌路独白 于 2021-1-26 11:23 编辑

谢谢,根据提示修改,已经进入中断,具体功能请再自行研究。/*
* @Descripttion:
* @version:
* @Author: Youliangxin
* @Date: 2021-01-25 17:24:57
* @LastEditors: sueRimn
* @LastEditTime: 2021-01-26 11:17:42
*/
#include "adt.h"
#include "gpio.h"

#define SET_LED Gpio_SetIO(1, 5, 1)
#define CLR_LED Gpio_SetIO(1, 5, 0)

void Adt4UnderFullCalllback(void)
{
    static uint8_t i;
    i++;
    if (i % 2 == 0)
    {
      SET_LED;
    }
    else
    {
      CLR_LED;
    }
}

void Time_4_Init(void)
{
    uint16_t u16Period;
    stc_adt_basecnt_cfg_t stcAdtBaseCntCfg;

    DDL_ZERO_STRUCT(stcAdtBaseCntCfg);

    if (Ok != Clk_SetPeripheralGate(ClkPeripheralAdt, TRUE)) //ADT外设时钟使能
    {
      return;
    }

    stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode;
    stcAdtBaseCntCfg.enCntDir = AdtCntUp;
    stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div256;
    Adt_Init(AdTIM4, &stcAdtBaseCntCfg); //ADT载波、计数模式、时钟配置

    u16Period = 46875;                //12000000/256 = 46875 周期设置为1S中断一次
    Adt_SetPeriod(AdTIM4, u16Period); //周期设置

    Adt_ConfigIrq(AdTIM4, AdtOVFIrq, TRUE, Adt4UnderFullCalllback); //中断配置

    Adt_StartCount(AdTIM4);

    /*LED初始化*/
    Gpio_InitIO(1, 5, GpioDirOut);
    Gpio_SetIO(1, 5, 1);
}

/******************************************************************************
* EOF (not truncated)
******************************************************************************/


andy93762 发表于 2021-1-26 22:29

页: [1]
查看完整版本: 请问HC32F003/005的高级定时器TIM4/5/6怎么实现普通定时计数?