打印
[技术问答]

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

[复制链接]
1396|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
o0pingu0o|  楼主 | 2020-4-12 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问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 ...

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

使用特权

评论回复
5
o0pingu0o|  楼主 | 2020-4-13 13:58 | 只看该作者
华恒电子 发表于 2020-4-13 13:32
这个我客户遇到过,后面调好了 加QQ:3284494788 对接技术支持

能发上来么?

使用特权

评论回复
6
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就可以。

使用特权

评论回复
7
o0pingu0o|  楼主 | 2020-4-14 08:08 | 只看该作者
martinhu 发表于 2020-4-13 15:06
这里的adt的compare out的例子,把输出的CHA和CHB的引脚不要配置,PCONR的输出配置也不要,只留周期的配 ...

多谢,已经实现了。

使用特权

评论回复
8
陌路独白| | 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)
******************************************************************************/


使用特权

评论回复
9
andy93762| | 2021-1-26 22:29 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

29

帖子

1

粉丝